TPTP Problem File: DAT137^1.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : DAT137^1 : TPTP v8.2.0. Released v7.0.0.
% Domain   : Data Structures
% Problem  : Coinductive list 4812
% Version  : [Bla16] axioms : Especial.
% English  :

% Refs     : [Loc10] Lochbihler (2010), Coinductive
%          : [RB15]  Reynolds & Blanchette (2015), A Decision Procedure for
%          : [Bla16] Blanchette (2016), Email to Geoff Sutcliffe
% Source   : [Bla16]
% Names    : coinductive_list__4812.p [Bla16]

% Status   : Theorem
% Rating   : 0.00 v7.2.0, 0.25 v7.1.0
% Syntax   : Number of formulae    :  359 ( 118 unt;  68 typ;   0 def)
%            Number of atoms       :  647 ( 291 equ;   0 cnn)
%            Maximal formula atoms :   12 (   2 avg)
%            Number of connectives : 3388 (  89   ~;  10   |;  22   &;2975   @)
%                                         (   0 <=>; 292  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   23 (   6 avg)
%            Number of types       :    4 (   3 usr)
%            Number of type conns  :  125 ( 125   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   68 (  65 usr;   5 con; 0-4 aty)
%            Number of variables   :  837 (  14   ^; 746   !;  24   ?; 837   :)
%                                         (  53  !>;   0  ?*;   0  @-;   0  @+)
% SPC      : TH1_THM_EQU_NAR

% Comments : This file was generated by Isabelle (most likely Sledgehammer)
%            2016-07-13 15:09:14.032
%------------------------------------------------------------------------------
%----Could-be-implicit typings (6)
thf(ty_t_Coinductive__List__Mirabelle__kmikjhschf_Ollist,type,
    coindu1593790203_llist: $tType > $tType ).

thf(ty_t_Extended__Nat_Oenat,type,
    extended_enat: $tType ).

thf(ty_t_List_Olist,type,
    list: $tType > $tType ).

thf(ty_t_Num_Onum,type,
    num: $tType ).

thf(ty_t_Nat_Onat,type,
    nat: $tType ).

thf(ty_t_itself,type,
    itself: $tType > $tType ).

%----Explicit typings (62)
thf(sy_cl_HOL_Otype,type,
    type: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Groups_Oone,type,
    one: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Num_Onumeral,type,
    numeral: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Rings_Oring__1,type,
    ring_1: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Groups_Ouminus,type,
    uminus: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Orderings_Oord,type,
    ord: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Nat_Oring__char__0,type,
    ring_char_0: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Num_Oneg__numeral,type,
    neg_numeral: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Orderings_Oorder,type,
    order: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Groups_Ogroup__add,type,
    group_add: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Orderings_Olinorder,type,
    linorder: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Groups_Oab__group__add,type,
    ab_group_add: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Nat_Osemiring__char__0,type,
    semiring_char_0: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Groups_Osemigroup__add,type,
    semigroup_add: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Rings_Ocomm__semiring__1,type,
    comm_semiring_1: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Rings_Olinordered__idom,type,
    linordered_idom: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Fields_Olinordered__field,type,
    linordered_field: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Groups_Oab__semigroup__add,type,
    ab_semigroup_add: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Rings_Olinordered__semidom,type,
    linordered_semidom: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Groups_Ocancel__semigroup__add,type,
    cancel_semigroup_add: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Groups_Oordered__ab__group__add,type,
    ordered_ab_group_add: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Groups_Oordered__ab__semigroup__add,type,
    ordere779506340up_add: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Groups_Oordered__ab__semigroup__add__imp__le,type,
    ordere236663937imp_le: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Groups_Oordered__cancel__ab__semigroup__add,type,
    ordere223160158up_add: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Groups_Ostrict__ordered__ab__semigroup__add,type,
    strict2144017051up_add: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_cl_Conditionally__Complete__Lattices_Olinear__continuum,type,
    condit1656338222tinuum: 
      !>[A: $tType] : ( ( itself @ A ) > $o ) ).

thf(sy_c_Coinductive__List__Mirabelle__kmikjhschf_Ogen__llength,type,
    coindu493225792length: 
      !>[A: $tType] : ( nat > ( coindu1593790203_llist @ A ) > extended_enat ) ).

thf(sy_c_Coinductive__List__Mirabelle__kmikjhschf_Olist__of__aux,type,
    coindu1542816657of_aux: 
      !>[A: $tType] : ( ( list @ A ) > ( coindu1593790203_llist @ A ) > ( list @ A ) ) ).

thf(sy_c_Coinductive__List__Mirabelle__kmikjhschf_Ollist_OLCons,type,
    coindu1121789889_LCons: 
      !>[A: $tType] : ( A > ( coindu1593790203_llist @ A ) > ( coindu1593790203_llist @ A ) ) ).

thf(sy_c_Coinductive__List__Mirabelle__kmikjhschf_Ollist_OLNil,type,
    coindu1598213697e_LNil: 
      !>[A: $tType] : ( coindu1593790203_llist @ A ) ).

thf(sy_c_Coinductive__List__Mirabelle__kmikjhschf_Ollist__of,type,
    coindu1079202755ist_of: 
      !>[A: $tType] : ( ( list @ A ) > ( coindu1593790203_llist @ A ) ) ).

thf(sy_c_Coinductive__List__Mirabelle__kmikjhschf_Olmember,type,
    coindu567634248member: 
      !>[A: $tType] : ( A > ( coindu1593790203_llist @ A ) > $o ) ).

thf(sy_c_Groups_Oone__class_Oone,type,
    one_one: 
      !>[A: $tType] : A ).

thf(sy_c_Groups_Oplus__class_Oplus,type,
    plus_plus: 
      !>[A: $tType] : ( A > A > A ) ).

thf(sy_c_Groups_Ouminus__class_Ouminus,type,
    uminus_uminus: 
      !>[A: $tType] : ( A > A ) ).

thf(sy_c_If,type,
    if: 
      !>[A: $tType] : ( $o > A > A > A ) ).

thf(sy_c_List_Ocount__list,type,
    count_list: 
      !>[A: $tType] : ( ( list @ A ) > A > nat ) ).

thf(sy_c_List_Ogen__length,type,
    gen_length: 
      !>[A: $tType] : ( nat > ( list @ A ) > nat ) ).

thf(sy_c_List_Olist_OCons,type,
    cons: 
      !>[A: $tType] : ( A > ( list @ A ) > ( list @ A ) ) ).

thf(sy_c_List_Olist_ONil,type,
    nil: 
      !>[A: $tType] : ( list @ A ) ).

thf(sy_c_List_Omember,type,
    member: 
      !>[A: $tType] : ( ( list @ A ) > A > $o ) ).

thf(sy_c_List_Onth,type,
    nth: 
      !>[A: $tType] : ( ( list @ A ) > nat > A ) ).

thf(sy_c_List_Oord__class_Olexordp__eq,type,
    ord_lexordp_eq: 
      !>[A: $tType] : ( ( list @ A ) > ( list @ A ) > $o ) ).

thf(sy_c_List_Oproduct__lists,type,
    product_lists: 
      !>[A: $tType] : ( ( list @ ( list @ A ) ) > ( list @ ( list @ A ) ) ) ).

thf(sy_c_List_Osublists,type,
    sublists: 
      !>[A: $tType] : ( ( list @ A ) > ( list @ ( list @ A ) ) ) ).

thf(sy_c_List_Oupt,type,
    upt: nat > nat > ( list @ nat ) ).

thf(sy_c_Nat_OSuc,type,
    suc: nat > nat ).

thf(sy_c_Nat__Bijection_Otriangle,type,
    nat_triangle: nat > nat ).

thf(sy_c_Num_OBitM,type,
    bitM: num > num ).

thf(sy_c_Num_Oinc,type,
    inc: num > num ).

thf(sy_c_Num_Oneg__numeral__class_Odbl,type,
    neg_numeral_dbl: 
      !>[A: $tType] : ( A > A ) ).

thf(sy_c_Num_Oneg__numeral__class_Odbl__dec,type,
    neg_numeral_dbl_dec: 
      !>[A: $tType] : ( A > A ) ).

thf(sy_c_Num_Oneg__numeral__class_Osub,type,
    neg_numeral_sub: 
      !>[A: $tType] : ( num > num > A ) ).

thf(sy_c_Num_Onum_OBit0,type,
    bit0: num > num ).

thf(sy_c_Num_Onum_OOne,type,
    one2: num ).

thf(sy_c_Num_Onumeral__class_Onumeral,type,
    numeral_numeral: 
      !>[A: $tType] : ( num > A ) ).

thf(sy_c_Num_Oring__1__class_Oiszero,type,
    ring_1_iszero: 
      !>[A: $tType] : ( A > $o ) ).

thf(sy_c_Orderings_Oord__class_Oless,type,
    ord_less: 
      !>[A: $tType] : ( A > A > $o ) ).

thf(sy_c_Pure_Otype,type,
    type2: 
      !>[A: $tType] : ( itself @ A ) ).

thf(sy_c_Sublist_Oprefixes,type,
    prefixes: 
      !>[A: $tType] : ( ( list @ A ) > ( list @ ( list @ A ) ) ) ).

thf(sy_v_ma____,type,
    ma: nat ).

thf(sy_v_na____,type,
    na: nat ).

%----Relevant facts (251)
thf(fact_0_llist__of__inject,axiom,
    ! [A: $tType,Xs: list @ A,Ys: list @ A] :
      ( ( ( coindu1079202755ist_of @ A @ Xs )
        = ( coindu1079202755ist_of @ A @ Ys ) )
      = ( Xs = Ys ) ) ).

% llist_of_inject
thf(fact_1_add__Suc__right,axiom,
    ! [M: nat,N: nat] :
      ( ( plus_plus @ nat @ M @ ( suc @ N ) )
      = ( suc @ ( plus_plus @ nat @ M @ N ) ) ) ).

% add_Suc_right
thf(fact_2_upt__conv__Cons__Cons,axiom,
    ! [M: nat,N: nat,Ns: list @ nat,Q: nat] :
      ( ( ( cons @ nat @ M @ ( cons @ nat @ N @ Ns ) )
        = ( upt @ M @ Q ) )
      = ( ( cons @ nat @ N @ Ns )
        = ( upt @ ( suc @ M ) @ Q ) ) ) ).

% upt_conv_Cons_Cons
thf(fact_3_nat_Oinject,axiom,
    ! [X2: nat,Y2: nat] :
      ( ( ( suc @ X2 )
        = ( suc @ Y2 ) )
      = ( X2 = Y2 ) ) ).

% nat.inject
thf(fact_4_old_Onat_Oinject,axiom,
    ! [Nat: nat,Nat2: nat] :
      ( ( ( suc @ Nat )
        = ( suc @ Nat2 ) )
      = ( Nat = Nat2 ) ) ).

% old.nat.inject
thf(fact_5_add__left__cancel,axiom,
    ! [A: $tType] :
      ( ( cancel_semigroup_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A] :
          ( ( ( plus_plus @ A @ A2 @ B )
            = ( plus_plus @ A @ A2 @ C ) )
          = ( B = C ) ) ) ).

% add_left_cancel
thf(fact_6_add__right__cancel,axiom,
    ! [A: $tType] :
      ( ( cancel_semigroup_add @ A @ ( type2 @ A ) )
     => ! [B: A,A2: A,C: A] :
          ( ( ( plus_plus @ A @ B @ A2 )
            = ( plus_plus @ A @ C @ A2 ) )
          = ( B = C ) ) ) ).

% add_right_cancel
thf(fact_7_list_Oinject,axiom,
    ! [A: $tType,X21: A,X22: list @ A,Y21: A,Y22: list @ A] :
      ( ( ( cons @ A @ X21 @ X22 )
        = ( cons @ A @ Y21 @ Y22 ) )
      = ( ( X21 = Y21 )
        & ( X22 = Y22 ) ) ) ).

% list.inject
thf(fact_8_add__Suc__shift,axiom,
    ! [M: nat,N: nat] :
      ( ( plus_plus @ nat @ ( suc @ M ) @ N )
      = ( plus_plus @ nat @ M @ ( suc @ N ) ) ) ).

% add_Suc_shift
thf(fact_9_add__Suc,axiom,
    ! [M: nat,N: nat] :
      ( ( plus_plus @ nat @ ( suc @ M ) @ N )
      = ( suc @ ( plus_plus @ nat @ M @ N ) ) ) ).

% add_Suc
thf(fact_10__092_060open_062_092_060And_062xs_Ax_O_ALCons_Ax_A_Illist__of_Axs_J_A_061_Allist__of_A_Ix_A_D_Axs_J_092_060close_062,axiom,
    ! [A: $tType,X: A,Xs: list @ A] :
      ( ( coindu1121789889_LCons @ A @ X @ ( coindu1079202755ist_of @ A @ Xs ) )
      = ( coindu1079202755ist_of @ A @ ( cons @ A @ X @ Xs ) ) ) ).

% \<open>\<And>xs x. LCons x (llist_of xs) = llist_of (x # xs)\<close>
thf(fact_11_nat__add__left__cancel,axiom,
    ! [K: nat,M: nat,N: nat] :
      ( ( ( plus_plus @ nat @ K @ M )
        = ( plus_plus @ nat @ K @ N ) )
      = ( M = N ) ) ).

% nat_add_left_cancel
thf(fact_12_llist_Oinject,axiom,
    ! [A: $tType,X21: A,X22: coindu1593790203_llist @ A,Y21: A,Y22: coindu1593790203_llist @ A] :
      ( ( ( coindu1121789889_LCons @ A @ X21 @ X22 )
        = ( coindu1121789889_LCons @ A @ Y21 @ Y22 ) )
      = ( ( X21 = Y21 )
        & ( X22 = Y22 ) ) ) ).

% llist.inject
thf(fact_13_llist__of__eq__LCons__conv,axiom,
    ! [A: $tType,Xs: list @ A,Y: A,Ys: coindu1593790203_llist @ A] :
      ( ( ( coindu1079202755ist_of @ A @ Xs )
        = ( coindu1121789889_LCons @ A @ Y @ Ys ) )
      = ( ? [Xs2: list @ A] :
            ( ( Xs
              = ( cons @ A @ Y @ Xs2 ) )
            & ( Ys
              = ( coindu1079202755ist_of @ A @ Xs2 ) ) ) ) ) ).

% llist_of_eq_LCons_conv
thf(fact_14_not__Cons__self2,axiom,
    ! [A: $tType,X: A,Xs: list @ A] :
      ( ( cons @ A @ X @ Xs )
     != Xs ) ).

% not_Cons_self2
thf(fact_15_add__right__imp__eq,axiom,
    ! [A: $tType] :
      ( ( cancel_semigroup_add @ A @ ( type2 @ A ) )
     => ! [B: A,A2: A,C: A] :
          ( ( ( plus_plus @ A @ B @ A2 )
            = ( plus_plus @ A @ C @ A2 ) )
         => ( B = C ) ) ) ).

% add_right_imp_eq
thf(fact_16_add__left__imp__eq,axiom,
    ! [A: $tType] :
      ( ( cancel_semigroup_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A] :
          ( ( ( plus_plus @ A @ A2 @ B )
            = ( plus_plus @ A @ A2 @ C ) )
         => ( B = C ) ) ) ).

% add_left_imp_eq
thf(fact_17_add_Oleft__commute,axiom,
    ! [A: $tType] :
      ( ( ab_semigroup_add @ A @ ( type2 @ A ) )
     => ! [B: A,A2: A,C: A] :
          ( ( plus_plus @ A @ B @ ( plus_plus @ A @ A2 @ C ) )
          = ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).

% add.left_commute
thf(fact_18_add_Ocommute,axiom,
    ! [A: $tType] :
      ( ( ab_semigroup_add @ A @ ( type2 @ A ) )
     => ( ( plus_plus @ A )
        = ( ^ [A3: A,B2: A] : ( plus_plus @ A @ B2 @ A3 ) ) ) ) ).

% add.commute
thf(fact_19_add_Oright__cancel,axiom,
    ! [A: $tType] :
      ( ( group_add @ A @ ( type2 @ A ) )
     => ! [B: A,A2: A,C: A] :
          ( ( ( plus_plus @ A @ B @ A2 )
            = ( plus_plus @ A @ C @ A2 ) )
          = ( B = C ) ) ) ).

% add.right_cancel
thf(fact_20_add_Oleft__cancel,axiom,
    ! [A: $tType] :
      ( ( group_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A] :
          ( ( ( plus_plus @ A @ A2 @ B )
            = ( plus_plus @ A @ A2 @ C ) )
          = ( B = C ) ) ) ).

% add.left_cancel
thf(fact_21_add_Oassoc,axiom,
    ! [A: $tType] :
      ( ( semigroup_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A] :
          ( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ C )
          = ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).

% add.assoc
thf(fact_22_add__mono__thms__linordered__semiring_I4_J,axiom,
    ! [A: $tType] :
      ( ( ordere779506340up_add @ A @ ( type2 @ A ) )
     => ! [I: A,J: A,K: A,L: A] :
          ( ( ( I = J )
            & ( K = L ) )
         => ( ( plus_plus @ A @ I @ K )
            = ( plus_plus @ A @ J @ L ) ) ) ) ).

% add_mono_thms_linordered_semiring(4)
thf(fact_23_ab__semigroup__add__class_Oadd__ac_I1_J,axiom,
    ! [A: $tType] :
      ( ( ab_semigroup_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A] :
          ( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ C )
          = ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).

% ab_semigroup_add_class.add_ac(1)
thf(fact_24_n__not__Suc__n,axiom,
    ! [N: nat] :
      ( N
     != ( suc @ N ) ) ).

% n_not_Suc_n
thf(fact_25_Suc__inject,axiom,
    ! [X: nat,Y: nat] :
      ( ( ( suc @ X )
        = ( suc @ Y ) )
     => ( X = Y ) ) ).

% Suc_inject
thf(fact_26_nat__add__right__cancel,axiom,
    ! [M: nat,K: nat,N: nat] :
      ( ( ( plus_plus @ nat @ M @ K )
        = ( plus_plus @ nat @ N @ K ) )
      = ( M = N ) ) ).

% nat_add_right_cancel
thf(fact_27_list__of__aux__code_I2_J,axiom,
    ! [A: $tType,Xs: list @ A,Y: A,Ys: coindu1593790203_llist @ A] :
      ( ( coindu1542816657of_aux @ A @ Xs @ ( coindu1121789889_LCons @ A @ Y @ Ys ) )
      = ( coindu1542816657of_aux @ A @ ( cons @ A @ Y @ Xs ) @ Ys ) ) ).

% list_of_aux_code(2)
thf(fact_28_gen__length__code_I2_J,axiom,
    ! [B3: $tType,N: nat,X: B3,Xs: list @ B3] :
      ( ( gen_length @ B3 @ N @ ( cons @ B3 @ X @ Xs ) )
      = ( gen_length @ B3 @ ( suc @ N ) @ Xs ) ) ).

% gen_length_code(2)
thf(fact_29_upt__conv__Cons,axiom,
    ! [I: nat,J: nat] :
      ( ( ord_less @ nat @ I @ J )
     => ( ( upt @ I @ J )
        = ( cons @ nat @ I @ ( upt @ ( suc @ I ) @ J ) ) ) ) ).

% upt_conv_Cons
thf(fact_30_lmember__code_I2_J,axiom,
    ! [A: $tType,X: A,Y: A,Ys: coindu1593790203_llist @ A] :
      ( ( coindu567634248member @ A @ X @ ( coindu1121789889_LCons @ A @ Y @ Ys ) )
      = ( ( X = Y )
        | ( coindu567634248member @ A @ X @ Ys ) ) ) ).

% lmember_code(2)
thf(fact_31_semiring__normalization__rules_I20_J,axiom,
    ! [A: $tType] :
      ( ( comm_semiring_1 @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A,D: A] :
          ( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ ( plus_plus @ A @ C @ D ) )
          = ( plus_plus @ A @ ( plus_plus @ A @ A2 @ C ) @ ( plus_plus @ A @ B @ D ) ) ) ) ).

% semiring_normalization_rules(20)
thf(fact_32_semiring__normalization__rules_I21_J,axiom,
    ! [A: $tType] :
      ( ( comm_semiring_1 @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A] :
          ( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ C )
          = ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).

% semiring_normalization_rules(21)
thf(fact_33_semiring__normalization__rules_I22_J,axiom,
    ! [A: $tType] :
      ( ( comm_semiring_1 @ A @ ( type2 @ A ) )
     => ! [A2: A,C: A,D: A] :
          ( ( plus_plus @ A @ A2 @ ( plus_plus @ A @ C @ D ) )
          = ( plus_plus @ A @ C @ ( plus_plus @ A @ A2 @ D ) ) ) ) ).

% semiring_normalization_rules(22)
thf(fact_34_semiring__normalization__rules_I23_J,axiom,
    ! [A: $tType] :
      ( ( comm_semiring_1 @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A] :
          ( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ C )
          = ( plus_plus @ A @ ( plus_plus @ A @ A2 @ C ) @ B ) ) ) ).

% semiring_normalization_rules(23)
thf(fact_35_semiring__normalization__rules_I24_J,axiom,
    ! [A: $tType] :
      ( ( comm_semiring_1 @ A @ ( type2 @ A ) )
     => ( ( plus_plus @ A )
        = ( ^ [A3: A,C2: A] : ( plus_plus @ A @ C2 @ A3 ) ) ) ) ).

% semiring_normalization_rules(24)
thf(fact_36_semiring__normalization__rules_I25_J,axiom,
    ! [A: $tType] :
      ( ( comm_semiring_1 @ A @ ( type2 @ A ) )
     => ! [A2: A,C: A,D: A] :
          ( ( plus_plus @ A @ A2 @ ( plus_plus @ A @ C @ D ) )
          = ( plus_plus @ A @ ( plus_plus @ A @ A2 @ C ) @ D ) ) ) ).

% semiring_normalization_rules(25)
thf(fact_37_linordered__field__class_Osign__simps_I26_J,axiom,
    ! [A: $tType] :
      ( ( linordered_field @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A] :
          ( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ C )
          = ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).

% linordered_field_class.sign_simps(26)
thf(fact_38_add__less__cancel__left,axiom,
    ! [A: $tType] :
      ( ( ordere236663937imp_le @ A @ ( type2 @ A ) )
     => ! [C: A,A2: A,B: A] :
          ( ( ord_less @ A @ ( plus_plus @ A @ C @ A2 ) @ ( plus_plus @ A @ C @ B ) )
          = ( ord_less @ A @ A2 @ B ) ) ) ).

% add_less_cancel_left
thf(fact_39_add__less__cancel__right,axiom,
    ! [A: $tType] :
      ( ( ordere236663937imp_le @ A @ ( type2 @ A ) )
     => ! [A2: A,C: A,B: A] :
          ( ( ord_less @ A @ ( plus_plus @ A @ A2 @ C ) @ ( plus_plus @ A @ B @ C ) )
          = ( ord_less @ A @ A2 @ B ) ) ) ).

% add_less_cancel_right
thf(fact_40_lessI,axiom,
    ! [N: nat] : ( ord_less @ nat @ N @ ( suc @ N ) ) ).

% lessI
thf(fact_41_Suc__mono,axiom,
    ! [M: nat,N: nat] :
      ( ( ord_less @ nat @ M @ N )
     => ( ord_less @ nat @ ( suc @ M ) @ ( suc @ N ) ) ) ).

% Suc_mono
thf(fact_42_Suc__less__eq,axiom,
    ! [M: nat,N: nat] :
      ( ( ord_less @ nat @ ( suc @ M ) @ ( suc @ N ) )
      = ( ord_less @ nat @ M @ N ) ) ).

% Suc_less_eq
thf(fact_43_nat__add__left__cancel__less,axiom,
    ! [K: nat,M: nat,N: nat] :
      ( ( ord_less @ nat @ ( plus_plus @ nat @ K @ M ) @ ( plus_plus @ nat @ K @ N ) )
      = ( ord_less @ nat @ M @ N ) ) ).

% nat_add_left_cancel_less
thf(fact_44_nat__neq__iff,axiom,
    ! [M: nat,N: nat] :
      ( ( M != N )
      = ( ( ord_less @ nat @ M @ N )
        | ( ord_less @ nat @ N @ M ) ) ) ).

% nat_neq_iff
thf(fact_45_less__not__refl,axiom,
    ! [N: nat] :
      ~ ( ord_less @ nat @ N @ N ) ).

% less_not_refl
thf(fact_46_less__not__refl2,axiom,
    ! [N: nat,M: nat] :
      ( ( ord_less @ nat @ N @ M )
     => ( M != N ) ) ).

% less_not_refl2
thf(fact_47_less__not__refl3,axiom,
    ! [S: nat,T: nat] :
      ( ( ord_less @ nat @ S @ T )
     => ( S != T ) ) ).

% less_not_refl3
thf(fact_48_measure__induct,axiom,
    ! [A: $tType,F: A > nat,P: A > $o,A2: A] :
      ( ! [X3: A] :
          ( ! [Y3: A] :
              ( ( ord_less @ nat @ ( F @ Y3 ) @ ( F @ X3 ) )
             => ( P @ Y3 ) )
         => ( P @ X3 ) )
     => ( P @ A2 ) ) ).

% measure_induct
thf(fact_49_less__irrefl__nat,axiom,
    ! [N: nat] :
      ~ ( ord_less @ nat @ N @ N ) ).

% less_irrefl_nat
thf(fact_50_nat__less__induct,axiom,
    ! [P: nat > $o,N: nat] :
      ( ! [N2: nat] :
          ( ! [M2: nat] :
              ( ( ord_less @ nat @ M2 @ N2 )
             => ( P @ M2 ) )
         => ( P @ N2 ) )
     => ( P @ N ) ) ).

% nat_less_induct
thf(fact_51_infinite__descent,axiom,
    ! [P: nat > $o,N: nat] :
      ( ! [N2: nat] :
          ( ~ ( P @ N2 )
         => ? [M2: nat] :
              ( ( ord_less @ nat @ M2 @ N2 )
              & ~ ( P @ M2 ) ) )
     => ( P @ N ) ) ).

% infinite_descent
thf(fact_52_linorder__neqE__nat,axiom,
    ! [X: nat,Y: nat] :
      ( ( X != Y )
     => ( ~ ( ord_less @ nat @ X @ Y )
       => ( ord_less @ nat @ Y @ X ) ) ) ).

% linorder_neqE_nat
thf(fact_53_measure__induct__rule,axiom,
    ! [A: $tType,F: A > nat,P: A > $o,A2: A] :
      ( ! [X3: A] :
          ( ! [Y3: A] :
              ( ( ord_less @ nat @ ( F @ Y3 ) @ ( F @ X3 ) )
             => ( P @ Y3 ) )
         => ( P @ X3 ) )
     => ( P @ A2 ) ) ).

% measure_induct_rule
thf(fact_54_infinite__descent__measure,axiom,
    ! [A: $tType,P: A > $o,V: A > nat,X: A] :
      ( ! [X3: A] :
          ( ~ ( P @ X3 )
         => ? [Y3: A] :
              ( ( ord_less @ nat @ ( V @ Y3 ) @ ( V @ X3 ) )
              & ~ ( P @ Y3 ) ) )
     => ( P @ X ) ) ).

% infinite_descent_measure
thf(fact_55_linordered__field__no__ub,axiom,
    ! [A: $tType] :
      ( ( linordered_field @ A @ ( type2 @ A ) )
     => ! [X4: A] :
        ? [X1: A] : ( ord_less @ A @ X4 @ X1 ) ) ).

% linordered_field_no_ub
thf(fact_56_linordered__field__no__lb,axiom,
    ! [A: $tType] :
      ( ( linordered_field @ A @ ( type2 @ A ) )
     => ! [X4: A] :
        ? [Y4: A] : ( ord_less @ A @ Y4 @ X4 ) ) ).

% linordered_field_no_lb
thf(fact_57_lift__Suc__mono__less__iff,axiom,
    ! [A: $tType] :
      ( ( order @ A @ ( type2 @ A ) )
     => ! [F: nat > A,N: nat,M: nat] :
          ( ! [N2: nat] : ( ord_less @ A @ ( F @ N2 ) @ ( F @ ( suc @ N2 ) ) )
         => ( ( ord_less @ A @ ( F @ N ) @ ( F @ M ) )
            = ( ord_less @ nat @ N @ M ) ) ) ) ).

% lift_Suc_mono_less_iff
thf(fact_58_lift__Suc__mono__less,axiom,
    ! [A: $tType] :
      ( ( order @ A @ ( type2 @ A ) )
     => ! [F: nat > A,N: nat,N3: nat] :
          ( ! [N2: nat] : ( ord_less @ A @ ( F @ N2 ) @ ( F @ ( suc @ N2 ) ) )
         => ( ( ord_less @ nat @ N @ N3 )
           => ( ord_less @ A @ ( F @ N ) @ ( F @ N3 ) ) ) ) ) ).

% lift_Suc_mono_less
thf(fact_59_add__mono__thms__linordered__field_I5_J,axiom,
    ! [A: $tType] :
      ( ( ordere223160158up_add @ A @ ( type2 @ A ) )
     => ! [I: A,J: A,K: A,L: A] :
          ( ( ( ord_less @ A @ I @ J )
            & ( ord_less @ A @ K @ L ) )
         => ( ord_less @ A @ ( plus_plus @ A @ I @ K ) @ ( plus_plus @ A @ J @ L ) ) ) ) ).

% add_mono_thms_linordered_field(5)
thf(fact_60_add__mono__thms__linordered__field_I2_J,axiom,
    ! [A: $tType] :
      ( ( ordere223160158up_add @ A @ ( type2 @ A ) )
     => ! [I: A,J: A,K: A,L: A] :
          ( ( ( I = J )
            & ( ord_less @ A @ K @ L ) )
         => ( ord_less @ A @ ( plus_plus @ A @ I @ K ) @ ( plus_plus @ A @ J @ L ) ) ) ) ).

% add_mono_thms_linordered_field(2)
thf(fact_61_add__mono__thms__linordered__field_I1_J,axiom,
    ! [A: $tType] :
      ( ( ordere223160158up_add @ A @ ( type2 @ A ) )
     => ! [I: A,J: A,K: A,L: A] :
          ( ( ( ord_less @ A @ I @ J )
            & ( K = L ) )
         => ( ord_less @ A @ ( plus_plus @ A @ I @ K ) @ ( plus_plus @ A @ J @ L ) ) ) ) ).

% add_mono_thms_linordered_field(1)
thf(fact_62_add__strict__mono,axiom,
    ! [A: $tType] :
      ( ( strict2144017051up_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A,D: A] :
          ( ( ord_less @ A @ A2 @ B )
         => ( ( ord_less @ A @ C @ D )
           => ( ord_less @ A @ ( plus_plus @ A @ A2 @ C ) @ ( plus_plus @ A @ B @ D ) ) ) ) ) ).

% add_strict_mono
thf(fact_63_add__strict__left__mono,axiom,
    ! [A: $tType] :
      ( ( ordere223160158up_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A] :
          ( ( ord_less @ A @ A2 @ B )
         => ( ord_less @ A @ ( plus_plus @ A @ C @ A2 ) @ ( plus_plus @ A @ C @ B ) ) ) ) ).

% add_strict_left_mono
thf(fact_64_add__strict__right__mono,axiom,
    ! [A: $tType] :
      ( ( ordere223160158up_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A] :
          ( ( ord_less @ A @ A2 @ B )
         => ( ord_less @ A @ ( plus_plus @ A @ A2 @ C ) @ ( plus_plus @ A @ B @ C ) ) ) ) ).

% add_strict_right_mono
thf(fact_65_add__less__imp__less__left,axiom,
    ! [A: $tType] :
      ( ( ordere236663937imp_le @ A @ ( type2 @ A ) )
     => ! [C: A,A2: A,B: A] :
          ( ( ord_less @ A @ ( plus_plus @ A @ C @ A2 ) @ ( plus_plus @ A @ C @ B ) )
         => ( ord_less @ A @ A2 @ B ) ) ) ).

% add_less_imp_less_left
thf(fact_66_add__less__imp__less__right,axiom,
    ! [A: $tType] :
      ( ( ordere236663937imp_le @ A @ ( type2 @ A ) )
     => ! [A2: A,C: A,B: A] :
          ( ( ord_less @ A @ ( plus_plus @ A @ A2 @ C ) @ ( plus_plus @ A @ B @ C ) )
         => ( ord_less @ A @ A2 @ B ) ) ) ).

% add_less_imp_less_right
thf(fact_67_lessE,axiom,
    ! [I: nat,K: nat] :
      ( ( ord_less @ nat @ I @ K )
     => ( ( K
         != ( suc @ I ) )
       => ~ ! [J2: nat] :
              ( ( ord_less @ nat @ I @ J2 )
             => ( K
               != ( suc @ J2 ) ) ) ) ) ).

% lessE
thf(fact_68_Suc__lessD,axiom,
    ! [M: nat,N: nat] :
      ( ( ord_less @ nat @ ( suc @ M ) @ N )
     => ( ord_less @ nat @ M @ N ) ) ).

% Suc_lessD
thf(fact_69_Suc__lessE,axiom,
    ! [I: nat,K: nat] :
      ( ( ord_less @ nat @ ( suc @ I ) @ K )
     => ~ ! [J2: nat] :
            ( ( ord_less @ nat @ I @ J2 )
           => ( K
             != ( suc @ J2 ) ) ) ) ).

% Suc_lessE
thf(fact_70_Suc__lessI,axiom,
    ! [M: nat,N: nat] :
      ( ( ord_less @ nat @ M @ N )
     => ( ( ( suc @ M )
         != N )
       => ( ord_less @ nat @ ( suc @ M ) @ N ) ) ) ).

% Suc_lessI
thf(fact_71_less__SucE,axiom,
    ! [M: nat,N: nat] :
      ( ( ord_less @ nat @ M @ ( suc @ N ) )
     => ( ~ ( ord_less @ nat @ M @ N )
       => ( M = N ) ) ) ).

% less_SucE
thf(fact_72_less__SucI,axiom,
    ! [M: nat,N: nat] :
      ( ( ord_less @ nat @ M @ N )
     => ( ord_less @ nat @ M @ ( suc @ N ) ) ) ).

% less_SucI
thf(fact_73_less__Suc__eq,axiom,
    ! [M: nat,N: nat] :
      ( ( ord_less @ nat @ M @ ( suc @ N ) )
      = ( ( ord_less @ nat @ M @ N )
        | ( M = N ) ) ) ).

% less_Suc_eq
thf(fact_74_not__less__eq,axiom,
    ! [M: nat,N: nat] :
      ( ( ~ ( ord_less @ nat @ M @ N ) )
      = ( ord_less @ nat @ N @ ( suc @ M ) ) ) ).

% not_less_eq
thf(fact_75_Suc__less__eq2,axiom,
    ! [N: nat,M: nat] :
      ( ( ord_less @ nat @ ( suc @ N ) @ M )
      = ( ? [M3: nat] :
            ( ( M
              = ( suc @ M3 ) )
            & ( ord_less @ nat @ N @ M3 ) ) ) ) ).

% Suc_less_eq2
thf(fact_76_less__antisym,axiom,
    ! [N: nat,M: nat] :
      ( ~ ( ord_less @ nat @ N @ M )
     => ( ( ord_less @ nat @ N @ ( suc @ M ) )
       => ( M = N ) ) ) ).

% less_antisym
thf(fact_77_Suc__less__SucD,axiom,
    ! [M: nat,N: nat] :
      ( ( ord_less @ nat @ ( suc @ M ) @ ( suc @ N ) )
     => ( ord_less @ nat @ M @ N ) ) ).

% Suc_less_SucD
thf(fact_78_less__trans__Suc,axiom,
    ! [I: nat,J: nat,K: nat] :
      ( ( ord_less @ nat @ I @ J )
     => ( ( ord_less @ nat @ J @ K )
       => ( ord_less @ nat @ ( suc @ I ) @ K ) ) ) ).

% less_trans_Suc
thf(fact_79_less__Suc__induct,axiom,
    ! [I: nat,J: nat,P: nat > nat > $o] :
      ( ( ord_less @ nat @ I @ J )
     => ( ! [I2: nat] : ( P @ I2 @ ( suc @ I2 ) )
       => ( ! [I2: nat,J2: nat,K2: nat] :
              ( ( ord_less @ nat @ I2 @ J2 )
             => ( ( ord_less @ nat @ J2 @ K2 )
               => ( ( P @ I2 @ J2 )
                 => ( ( P @ J2 @ K2 )
                   => ( P @ I2 @ K2 ) ) ) ) )
         => ( P @ I @ J ) ) ) ) ).

% less_Suc_induct
thf(fact_80_strict__inc__induct,axiom,
    ! [I: nat,J: nat,P: nat > $o] :
      ( ( ord_less @ nat @ I @ J )
     => ( ! [I2: nat] :
            ( ( J
              = ( suc @ I2 ) )
           => ( P @ I2 ) )
       => ( ! [I2: nat] :
              ( ( ord_less @ nat @ I2 @ J )
             => ( ( P @ ( suc @ I2 ) )
               => ( P @ I2 ) ) )
         => ( P @ I ) ) ) ) ).

% strict_inc_induct
thf(fact_81_not__less__less__Suc__eq,axiom,
    ! [N: nat,M: nat] :
      ( ~ ( ord_less @ nat @ N @ M )
     => ( ( ord_less @ nat @ N @ ( suc @ M ) )
        = ( N = M ) ) ) ).

% not_less_less_Suc_eq
thf(fact_82_add__lessD1,axiom,
    ! [I: nat,J: nat,K: nat] :
      ( ( ord_less @ nat @ ( plus_plus @ nat @ I @ J ) @ K )
     => ( ord_less @ nat @ I @ K ) ) ).

% add_lessD1
thf(fact_83_add__less__mono,axiom,
    ! [I: nat,J: nat,K: nat,L: nat] :
      ( ( ord_less @ nat @ I @ J )
     => ( ( ord_less @ nat @ K @ L )
       => ( ord_less @ nat @ ( plus_plus @ nat @ I @ K ) @ ( plus_plus @ nat @ J @ L ) ) ) ) ).

% add_less_mono
thf(fact_84_not__add__less1,axiom,
    ! [I: nat,J: nat] :
      ~ ( ord_less @ nat @ ( plus_plus @ nat @ I @ J ) @ I ) ).

% not_add_less1
thf(fact_85_not__add__less2,axiom,
    ! [J: nat,I: nat] :
      ~ ( ord_less @ nat @ ( plus_plus @ nat @ J @ I ) @ I ) ).

% not_add_less2
thf(fact_86_add__less__mono1,axiom,
    ! [I: nat,J: nat,K: nat] :
      ( ( ord_less @ nat @ I @ J )
     => ( ord_less @ nat @ ( plus_plus @ nat @ I @ K ) @ ( plus_plus @ nat @ J @ K ) ) ) ).

% add_less_mono1
thf(fact_87_trans__less__add1,axiom,
    ! [I: nat,J: nat,M: nat] :
      ( ( ord_less @ nat @ I @ J )
     => ( ord_less @ nat @ I @ ( plus_plus @ nat @ J @ M ) ) ) ).

% trans_less_add1
thf(fact_88_trans__less__add2,axiom,
    ! [I: nat,J: nat,M: nat] :
      ( ( ord_less @ nat @ I @ J )
     => ( ord_less @ nat @ I @ ( plus_plus @ nat @ M @ J ) ) ) ).

% trans_less_add2
thf(fact_89_less__add__eq__less,axiom,
    ! [K: nat,L: nat,M: nat,N: nat] :
      ( ( ord_less @ nat @ K @ L )
     => ( ( ( plus_plus @ nat @ M @ L )
          = ( plus_plus @ nat @ K @ N ) )
       => ( ord_less @ nat @ M @ N ) ) ) ).

% less_add_eq_less
thf(fact_90_less__add__Suc1,axiom,
    ! [I: nat,M: nat] : ( ord_less @ nat @ I @ ( suc @ ( plus_plus @ nat @ I @ M ) ) ) ).

% less_add_Suc1
thf(fact_91_less__add__Suc2,axiom,
    ! [I: nat,M: nat] : ( ord_less @ nat @ I @ ( suc @ ( plus_plus @ nat @ M @ I ) ) ) ).

% less_add_Suc2
thf(fact_92_less__iff__Suc__add,axiom,
    ( ( ord_less @ nat )
    = ( ^ [M4: nat,N4: nat] :
        ? [K3: nat] :
          ( N4
          = ( suc @ ( plus_plus @ nat @ M4 @ K3 ) ) ) ) ) ).

% less_iff_Suc_add
thf(fact_93_less__imp__Suc__add,axiom,
    ! [M: nat,N: nat] :
      ( ( ord_less @ nat @ M @ N )
     => ? [K2: nat] :
          ( N
          = ( suc @ ( plus_plus @ nat @ M @ K2 ) ) ) ) ).

% less_imp_Suc_add
thf(fact_94_linordered__field__class_Osign__simps_I28_J,axiom,
    ! [A: $tType] :
      ( ( linordered_field @ A @ ( type2 @ A ) )
     => ! [B: A,A2: A,C: A] :
          ( ( plus_plus @ A @ B @ ( plus_plus @ A @ A2 @ C ) )
          = ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).

% linordered_field_class.sign_simps(28)
thf(fact_95_linordered__field__class_Osign__simps_I27_J,axiom,
    ! [A: $tType] :
      ( ( linordered_field @ A @ ( type2 @ A ) )
     => ( ( plus_plus @ A )
        = ( ^ [A3: A,B2: A] : ( plus_plus @ A @ B2 @ A3 ) ) ) ) ).

% linordered_field_class.sign_simps(27)
thf(fact_96_upt__eq__Cons__conv,axiom,
    ! [I: nat,J: nat,X: nat,Xs: list @ nat] :
      ( ( ( upt @ I @ J )
        = ( cons @ nat @ X @ Xs ) )
      = ( ( ord_less @ nat @ I @ J )
        & ( I = X )
        & ( ( upt @ ( plus_plus @ nat @ I @ ( one_one @ nat ) ) @ J )
          = Xs ) ) ) ).

% upt_eq_Cons_conv
thf(fact_97_upt__rec,axiom,
    ( upt
    = ( ^ [I3: nat,J3: nat] : ( if @ ( list @ nat ) @ ( ord_less @ nat @ I3 @ J3 ) @ ( cons @ nat @ I3 @ ( upt @ ( suc @ I3 ) @ J3 ) ) @ ( nil @ nat ) ) ) ) ).

% upt_rec
thf(fact_98_nth__upt,axiom,
    ! [I: nat,K: nat,J: nat] :
      ( ( ord_less @ nat @ ( plus_plus @ nat @ I @ K ) @ J )
     => ( ( nth @ nat @ ( upt @ I @ J ) @ K )
        = ( plus_plus @ nat @ I @ K ) ) ) ).

% nth_upt
thf(fact_99_lexordp__eq__simps_I4_J,axiom,
    ! [A: $tType] :
      ( ( ord @ A @ ( type2 @ A ) )
     => ! [X: A,Xs: list @ A,Y: A,Ys: list @ A] :
          ( ( ord_lexordp_eq @ A @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) )
          = ( ( ord_less @ A @ X @ Y )
            | ( ~ ( ord_less @ A @ Y @ X )
              & ( ord_lexordp_eq @ A @ Xs @ Ys ) ) ) ) ) ).

% lexordp_eq_simps(4)
thf(fact_100_is__num__normalize_I1_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A,C: A] :
          ( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ C )
          = ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).

% is_num_normalize(1)
thf(fact_101_member__rec_I1_J,axiom,
    ! [A: $tType,X: A,Xs: list @ A,Y: A] :
      ( ( member @ A @ ( cons @ A @ X @ Xs ) @ Y )
      = ( ( X = Y )
        | ( member @ A @ Xs @ Y ) ) ) ).

% member_rec(1)
thf(fact_102_ex__gt__or__lt,axiom,
    ! [A: $tType] :
      ( ( condit1656338222tinuum @ A @ ( type2 @ A ) )
     => ! [A2: A] :
        ? [B4: A] :
          ( ( ord_less @ A @ A2 @ B4 )
          | ( ord_less @ A @ B4 @ A2 ) ) ) ).

% ex_gt_or_lt
thf(fact_103_linorder__neqE__linordered__idom,axiom,
    ! [A: $tType] :
      ( ( linordered_idom @ A @ ( type2 @ A ) )
     => ! [X: A,Y: A] :
          ( ( X != Y )
         => ( ~ ( ord_less @ A @ X @ Y )
           => ( ord_less @ A @ Y @ X ) ) ) ) ).

% linorder_neqE_linordered_idom
thf(fact_104_lexordp__eq__simps_I1_J,axiom,
    ! [A: $tType] :
      ( ( ord @ A @ ( type2 @ A ) )
     => ! [Ys: list @ A] : ( ord_lexordp_eq @ A @ ( nil @ A ) @ Ys ) ) ).

% lexordp_eq_simps(1)
thf(fact_105_lexordp__eq__simps_I2_J,axiom,
    ! [A: $tType] :
      ( ( ord @ A @ ( type2 @ A ) )
     => ! [Xs: list @ A] :
          ( ( ord_lexordp_eq @ A @ Xs @ ( nil @ A ) )
          = ( Xs
            = ( nil @ A ) ) ) ) ).

% lexordp_eq_simps(2)
thf(fact_106_nth__Cons__Suc,axiom,
    ! [A: $tType,X: A,Xs: list @ A,N: nat] :
      ( ( nth @ A @ ( cons @ A @ X @ Xs ) @ ( suc @ N ) )
      = ( nth @ A @ Xs @ N ) ) ).

% nth_Cons_Suc
thf(fact_107_lexordp__eq__simps_I3_J,axiom,
    ! [A: $tType] :
      ( ( ord @ A @ ( type2 @ A ) )
     => ! [X: A,Xs: list @ A] :
          ~ ( ord_lexordp_eq @ A @ ( cons @ A @ X @ Xs ) @ ( nil @ A ) ) ) ).

% lexordp_eq_simps(3)
thf(fact_108_less__numeral__extra_I4_J,axiom,
    ! [A: $tType] :
      ( ( linordered_semidom @ A @ ( type2 @ A ) )
     => ~ ( ord_less @ A @ ( one_one @ A ) @ ( one_one @ A ) ) ) ).

% less_numeral_extra(4)
thf(fact_109_transpose_Ocases,axiom,
    ! [A: $tType,X: list @ ( list @ A )] :
      ( ( X
       != ( nil @ ( list @ A ) ) )
     => ( ! [Xss: list @ ( list @ A )] :
            ( X
           != ( cons @ ( list @ A ) @ ( nil @ A ) @ Xss ) )
       => ~ ! [X3: A,Xs3: list @ A,Xss: list @ ( list @ A )] :
              ( X
             != ( cons @ ( list @ A ) @ ( cons @ A @ X3 @ Xs3 ) @ Xss ) ) ) ) ).

% transpose.cases
thf(fact_110_lexordp__eq__antisym,axiom,
    ! [A: $tType] :
      ( ( linorder @ A @ ( type2 @ A ) )
     => ! [Xs: list @ A,Ys: list @ A] :
          ( ( ord_lexordp_eq @ A @ Xs @ Ys )
         => ( ( ord_lexordp_eq @ A @ Ys @ Xs )
           => ( Xs = Ys ) ) ) ) ).

% lexordp_eq_antisym
thf(fact_111_lexordp__eq__linear,axiom,
    ! [A: $tType] :
      ( ( linorder @ A @ ( type2 @ A ) )
     => ! [Xs: list @ A,Ys: list @ A] :
          ( ( ord_lexordp_eq @ A @ Xs @ Ys )
          | ( ord_lexordp_eq @ A @ Ys @ Xs ) ) ) ).

% lexordp_eq_linear
thf(fact_112_lexordp__eq__trans,axiom,
    ! [A: $tType] :
      ( ( linorder @ A @ ( type2 @ A ) )
     => ! [Xs: list @ A,Ys: list @ A,Zs: list @ A] :
          ( ( ord_lexordp_eq @ A @ Xs @ Ys )
         => ( ( ord_lexordp_eq @ A @ Ys @ Zs )
           => ( ord_lexordp_eq @ A @ Xs @ Zs ) ) ) ) ).

% lexordp_eq_trans
thf(fact_113_lexordp__eq__refl,axiom,
    ! [A: $tType] :
      ( ( ord @ A @ ( type2 @ A ) )
     => ! [Xs: list @ A] : ( ord_lexordp_eq @ A @ Xs @ Xs ) ) ).

% lexordp_eq_refl
thf(fact_114_lexordp__eq_ONil,axiom,
    ! [A: $tType] :
      ( ( ord @ A @ ( type2 @ A ) )
     => ! [Ys: list @ A] : ( ord_lexordp_eq @ A @ ( nil @ A ) @ Ys ) ) ).

% lexordp_eq.Nil
thf(fact_115_one__reorient,axiom,
    ! [A: $tType] :
      ( ( one @ A @ ( type2 @ A ) )
     => ! [X: A] :
          ( ( ( one_one @ A )
            = X )
          = ( X
            = ( one_one @ A ) ) ) ) ).

% one_reorient
thf(fact_116_member__rec_I2_J,axiom,
    ! [A: $tType,Y: A] :
      ~ ( member @ A @ ( nil @ A ) @ Y ) ).

% member_rec(2)
thf(fact_117_lexordp__eq_Oinducts,axiom,
    ! [A: $tType] :
      ( ( ord @ A @ ( type2 @ A ) )
     => ! [X12: list @ A,X2: list @ A,P: ( list @ A ) > ( list @ A ) > $o] :
          ( ( ord_lexordp_eq @ A @ X12 @ X2 )
         => ( ! [X1: list @ A] : ( P @ ( nil @ A ) @ X1 )
           => ( ! [X3: A,Y4: A,Xs3: list @ A,Ys2: list @ A] :
                  ( ( ord_less @ A @ X3 @ Y4 )
                 => ( P @ ( cons @ A @ X3 @ Xs3 ) @ ( cons @ A @ Y4 @ Ys2 ) ) )
             => ( ! [X3: A,Y4: A,Xs3: list @ A,Ys2: list @ A] :
                    ( ~ ( ord_less @ A @ X3 @ Y4 )
                   => ( ~ ( ord_less @ A @ Y4 @ X3 )
                     => ( ( ord_lexordp_eq @ A @ Xs3 @ Ys2 )
                       => ( ( P @ Xs3 @ Ys2 )
                         => ( P @ ( cons @ A @ X3 @ Xs3 ) @ ( cons @ A @ Y4 @ Ys2 ) ) ) ) ) )
               => ( P @ X12 @ X2 ) ) ) ) ) ) ).

% lexordp_eq.inducts
thf(fact_118_lexordp__eq_Osimps,axiom,
    ! [A: $tType] :
      ( ( ord @ A @ ( type2 @ A ) )
     => ( ( ord_lexordp_eq @ A )
        = ( ^ [A1: list @ A,A22: list @ A] :
              ( ? [Ys3: list @ A] :
                  ( ( A1
                    = ( nil @ A ) )
                  & ( A22 = Ys3 ) )
              | ? [X5: A,Y5: A,Xs4: list @ A,Ys3: list @ A] :
                  ( ( A1
                    = ( cons @ A @ X5 @ Xs4 ) )
                  & ( A22
                    = ( cons @ A @ Y5 @ Ys3 ) )
                  & ( ord_less @ A @ X5 @ Y5 ) )
              | ? [X5: A,Y5: A,Xs4: list @ A,Ys3: list @ A] :
                  ( ( A1
                    = ( cons @ A @ X5 @ Xs4 ) )
                  & ( A22
                    = ( cons @ A @ Y5 @ Ys3 ) )
                  & ~ ( ord_less @ A @ X5 @ Y5 )
                  & ~ ( ord_less @ A @ Y5 @ X5 )
                  & ( ord_lexordp_eq @ A @ Xs4 @ Ys3 ) ) ) ) ) ) ).

% lexordp_eq.simps
thf(fact_119_lexordp__eq_Ocases,axiom,
    ! [A: $tType] :
      ( ( ord @ A @ ( type2 @ A ) )
     => ! [A12: list @ A,A23: list @ A] :
          ( ( ord_lexordp_eq @ A @ A12 @ A23 )
         => ( ( ( A12
                = ( nil @ A ) )
             => ! [Ys2: list @ A] : A23 != Ys2 )
           => ( ! [X3: A] :
                  ( ? [Xs3: list @ A] :
                      ( A12
                      = ( cons @ A @ X3 @ Xs3 ) )
                 => ! [Y4: A] :
                      ( ? [Ys2: list @ A] :
                          ( A23
                          = ( cons @ A @ Y4 @ Ys2 ) )
                     => ~ ( ord_less @ A @ X3 @ Y4 ) ) )
             => ~ ! [X3: A,Y4: A,Xs3: list @ A] :
                    ( ( A12
                      = ( cons @ A @ X3 @ Xs3 ) )
                   => ! [Ys2: list @ A] :
                        ( ( A23
                          = ( cons @ A @ Y4 @ Ys2 ) )
                       => ( ~ ( ord_less @ A @ X3 @ Y4 )
                         => ( ~ ( ord_less @ A @ Y4 @ X3 )
                           => ~ ( ord_lexordp_eq @ A @ Xs3 @ Ys2 ) ) ) ) ) ) ) ) ) ).

% lexordp_eq.cases
thf(fact_120_map__tailrec__rev_Oinduct,axiom,
    ! [A: $tType,B3: $tType,P: ( A > B3 ) > ( list @ A ) > ( list @ B3 ) > $o,A0: A > B3,A12: list @ A,A23: list @ B3] :
      ( ! [F2: A > B3,X1: list @ B3] : ( P @ F2 @ ( nil @ A ) @ X1 )
     => ( ! [F2: A > B3,A4: A,As: list @ A,Bs: list @ B3] :
            ( ( P @ F2 @ As @ ( cons @ B3 @ ( F2 @ A4 ) @ Bs ) )
           => ( P @ F2 @ ( cons @ A @ A4 @ As ) @ Bs ) )
       => ( P @ A0 @ A12 @ A23 ) ) ) ).

% map_tailrec_rev.induct
thf(fact_121_list__nonempty__induct,axiom,
    ! [A: $tType,Xs: list @ A,P: ( list @ A ) > $o] :
      ( ( Xs
       != ( nil @ A ) )
     => ( ! [X3: A] : ( P @ ( cons @ A @ X3 @ ( nil @ A ) ) )
       => ( ! [X3: A,Xs3: list @ A] :
              ( ( Xs3
               != ( nil @ A ) )
             => ( ( P @ Xs3 )
               => ( P @ ( cons @ A @ X3 @ Xs3 ) ) ) )
         => ( P @ Xs ) ) ) ) ).

% list_nonempty_induct
thf(fact_122_remdups__adj_Oinduct,axiom,
    ! [A: $tType,P: ( list @ A ) > $o,A0: list @ A] :
      ( ( P @ ( nil @ A ) )
     => ( ! [X3: A] : ( P @ ( cons @ A @ X3 @ ( nil @ A ) ) )
       => ( ! [X3: A,Y4: A,Xs3: list @ A] :
              ( ( ( X3 = Y4 )
               => ( P @ ( cons @ A @ X3 @ Xs3 ) ) )
             => ( ( ( X3 != Y4 )
                 => ( P @ ( cons @ A @ Y4 @ Xs3 ) ) )
               => ( P @ ( cons @ A @ X3 @ ( cons @ A @ Y4 @ Xs3 ) ) ) ) )
         => ( P @ A0 ) ) ) ) ).

% remdups_adj.induct
thf(fact_123_remdups__adj_Ocases,axiom,
    ! [A: $tType,X: list @ A] :
      ( ( X
       != ( nil @ A ) )
     => ( ! [X3: A] :
            ( X
           != ( cons @ A @ X3 @ ( nil @ A ) ) )
       => ~ ! [X3: A,Y4: A,Xs3: list @ A] :
              ( X
             != ( cons @ A @ X3 @ ( cons @ A @ Y4 @ Xs3 ) ) ) ) ) ).

% remdups_adj.cases
thf(fact_124_splice_Oinduct,axiom,
    ! [A: $tType,P: ( list @ A ) > ( list @ A ) > $o,A0: list @ A,A12: list @ A] :
      ( ! [X1: list @ A] : ( P @ ( nil @ A ) @ X1 )
     => ( ! [V2: A,Va: list @ A] : ( P @ ( cons @ A @ V2 @ Va ) @ ( nil @ A ) )
       => ( ! [X3: A,Xs3: list @ A,Y4: A,Ys2: list @ A] :
              ( ( P @ Xs3 @ Ys2 )
             => ( P @ ( cons @ A @ X3 @ Xs3 ) @ ( cons @ A @ Y4 @ Ys2 ) ) )
         => ( P @ A0 @ A12 ) ) ) ) ).

% splice.induct
thf(fact_125_list__induct2_H,axiom,
    ! [A: $tType,B3: $tType,P: ( list @ A ) > ( list @ B3 ) > $o,Xs: list @ A,Ys: list @ B3] :
      ( ( P @ ( nil @ A ) @ ( nil @ B3 ) )
     => ( ! [X3: A,Xs3: list @ A] : ( P @ ( cons @ A @ X3 @ Xs3 ) @ ( nil @ B3 ) )
       => ( ! [Y4: B3,Ys2: list @ B3] : ( P @ ( nil @ A ) @ ( cons @ B3 @ Y4 @ Ys2 ) )
         => ( ! [X3: A,Xs3: list @ A,Y4: B3,Ys2: list @ B3] :
                ( ( P @ Xs3 @ Ys2 )
               => ( P @ ( cons @ A @ X3 @ Xs3 ) @ ( cons @ B3 @ Y4 @ Ys2 ) ) )
           => ( P @ Xs @ Ys ) ) ) ) ) ).

% list_induct2'
thf(fact_126_neq__Nil__conv,axiom,
    ! [A: $tType,Xs: list @ A] :
      ( ( Xs
       != ( nil @ A ) )
      = ( ? [Y5: A,Ys3: list @ A] :
            ( Xs
            = ( cons @ A @ Y5 @ Ys3 ) ) ) ) ).

% neq_Nil_conv
thf(fact_127_list_Oinducts,axiom,
    ! [A: $tType,P: ( list @ A ) > $o,List: list @ A] :
      ( ( P @ ( nil @ A ) )
     => ( ! [X1: A,X23: list @ A] :
            ( ( P @ X23 )
           => ( P @ ( cons @ A @ X1 @ X23 ) ) )
       => ( P @ List ) ) ) ).

% list.inducts
thf(fact_128_list_Oexhaust,axiom,
    ! [A: $tType,Y: list @ A] :
      ( ( Y
       != ( nil @ A ) )
     => ~ ! [X212: A,X222: list @ A] :
            ( Y
           != ( cons @ A @ X212 @ X222 ) ) ) ).

% list.exhaust
thf(fact_129_list_OdiscI,axiom,
    ! [A: $tType,List: list @ A,X21: A,X22: list @ A] :
      ( ( List
        = ( cons @ A @ X21 @ X22 ) )
     => ( List
       != ( nil @ A ) ) ) ).

% list.discI
thf(fact_130_list_Odistinct_I1_J,axiom,
    ! [A: $tType,X21: A,X22: list @ A] :
      ( ( nil @ A )
     != ( cons @ A @ X21 @ X22 ) ) ).

% list.distinct(1)
thf(fact_131_less__add__one,axiom,
    ! [A: $tType] :
      ( ( linordered_semidom @ A @ ( type2 @ A ) )
     => ! [A2: A] : ( ord_less @ A @ A2 @ ( plus_plus @ A @ A2 @ ( one_one @ A ) ) ) ) ).

% less_add_one
thf(fact_132_gen__length__code_I1_J,axiom,
    ! [A: $tType,N: nat] :
      ( ( gen_length @ A @ N @ ( nil @ A ) )
      = N ) ).

% gen_length_code(1)
thf(fact_133_Suc__eq__plus1__left,axiom,
    ( suc
    = ( plus_plus @ nat @ ( one_one @ nat ) ) ) ).

% Suc_eq_plus1_left
thf(fact_134_Suc__eq__plus1,axiom,
    ( suc
    = ( ^ [N4: nat] : ( plus_plus @ nat @ N4 @ ( one_one @ nat ) ) ) ) ).

% Suc_eq_plus1
thf(fact_135_lexordp__eq_OCons,axiom,
    ! [A: $tType] :
      ( ( ord @ A @ ( type2 @ A ) )
     => ! [X: A,Y: A,Xs: list @ A,Ys: list @ A] :
          ( ( ord_less @ A @ X @ Y )
         => ( ord_lexordp_eq @ A @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) ) ) ) ).

% lexordp_eq.Cons
thf(fact_136_lexordp__eq_OCons__eq,axiom,
    ! [A: $tType] :
      ( ( ord @ A @ ( type2 @ A ) )
     => ! [X: A,Y: A,Xs: list @ A,Ys: list @ A] :
          ( ~ ( ord_less @ A @ X @ Y )
         => ( ~ ( ord_less @ A @ Y @ X )
           => ( ( ord_lexordp_eq @ A @ Xs @ Ys )
             => ( ord_lexordp_eq @ A @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) ) ) ) ) ) ).

% lexordp_eq.Cons_eq
thf(fact_137_fold__atLeastAtMost__nat_Oinduct,axiom,
    ! [A: $tType,P: ( nat > A > A ) > nat > nat > A > $o,A0: nat > A > A,A12: nat,A23: nat,A32: A] :
      ( ! [F2: nat > A > A,A4: nat,B4: nat,Acc: A] :
          ( ( ~ ( ord_less @ nat @ B4 @ A4 )
           => ( P @ F2 @ ( plus_plus @ nat @ A4 @ ( one_one @ nat ) ) @ B4 @ ( F2 @ A4 @ Acc ) ) )
         => ( P @ F2 @ A4 @ B4 @ Acc ) )
     => ( P @ A0 @ A12 @ A23 @ A32 ) ) ).

% fold_atLeastAtMost_nat.induct
thf(fact_138_list__encode_Oinduct,axiom,
    ! [P: ( list @ nat ) > $o,A0: list @ nat] :
      ( ( P @ ( nil @ nat ) )
     => ( ! [X3: nat,Xs3: list @ nat] :
            ( ( P @ Xs3 )
           => ( P @ ( cons @ nat @ X3 @ Xs3 ) ) )
       => ( P @ A0 ) ) ) ).

% list_encode.induct
thf(fact_139_list__encode_Ocases,axiom,
    ! [X: list @ nat] :
      ( ( X
       != ( nil @ nat ) )
     => ~ ! [X3: nat,Xs3: list @ nat] :
            ( X
           != ( cons @ nat @ X3 @ Xs3 ) ) ) ).

% list_encode.cases
thf(fact_140_gen__llength__code_I2_J,axiom,
    ! [B3: $tType,N: nat,X: B3,Xs: coindu1593790203_llist @ B3] :
      ( ( coindu493225792length @ B3 @ N @ ( coindu1121789889_LCons @ B3 @ X @ Xs ) )
      = ( coindu493225792length @ B3 @ ( plus_plus @ nat @ N @ ( one_one @ nat ) ) @ Xs ) ) ).

% gen_llength_code(2)
thf(fact_141_upt__rec__numeral,axiom,
    ! [M: num,N: num] :
      ( ( ( ord_less @ nat @ ( numeral_numeral @ nat @ M ) @ ( numeral_numeral @ nat @ N ) )
       => ( ( upt @ ( numeral_numeral @ nat @ M ) @ ( numeral_numeral @ nat @ N ) )
          = ( cons @ nat @ ( numeral_numeral @ nat @ M ) @ ( upt @ ( suc @ ( numeral_numeral @ nat @ M ) ) @ ( numeral_numeral @ nat @ N ) ) ) ) )
      & ( ~ ( ord_less @ nat @ ( numeral_numeral @ nat @ M ) @ ( numeral_numeral @ nat @ N ) )
       => ( ( upt @ ( numeral_numeral @ nat @ M ) @ ( numeral_numeral @ nat @ N ) )
          = ( nil @ nat ) ) ) ) ).

% upt_rec_numeral
thf(fact_142_numeral__eq__iff,axiom,
    ! [A: $tType] :
      ( ( semiring_char_0 @ A @ ( type2 @ A ) )
     => ! [M: num,N: num] :
          ( ( ( numeral_numeral @ A @ M )
            = ( numeral_numeral @ A @ N ) )
          = ( M = N ) ) ) ).

% numeral_eq_iff
thf(fact_143_numeral__less__iff,axiom,
    ! [A: $tType] :
      ( ( linordered_semidom @ A @ ( type2 @ A ) )
     => ! [M: num,N: num] :
          ( ( ord_less @ A @ ( numeral_numeral @ A @ M ) @ ( numeral_numeral @ A @ N ) )
          = ( ord_less @ num @ M @ N ) ) ) ).

% numeral_less_iff
thf(fact_144_add__numeral__left,axiom,
    ! [A: $tType] :
      ( ( numeral @ A @ ( type2 @ A ) )
     => ! [V3: num,W: num,Z: A] :
          ( ( plus_plus @ A @ ( numeral_numeral @ A @ V3 ) @ ( plus_plus @ A @ ( numeral_numeral @ A @ W ) @ Z ) )
          = ( plus_plus @ A @ ( numeral_numeral @ A @ ( plus_plus @ num @ V3 @ W ) ) @ Z ) ) ) ).

% add_numeral_left
thf(fact_145_numeral__plus__numeral,axiom,
    ! [A: $tType] :
      ( ( numeral @ A @ ( type2 @ A ) )
     => ! [M: num,N: num] :
          ( ( plus_plus @ A @ ( numeral_numeral @ A @ M ) @ ( numeral_numeral @ A @ N ) )
          = ( numeral_numeral @ A @ ( plus_plus @ num @ M @ N ) ) ) ) ).

% numeral_plus_numeral
thf(fact_146_not__numeral__less__one,axiom,
    ! [A: $tType] :
      ( ( linordered_semidom @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ~ ( ord_less @ A @ ( numeral_numeral @ A @ N ) @ ( one_one @ A ) ) ) ).

% not_numeral_less_one
thf(fact_147_one__plus__numeral__commute,axiom,
    ! [A: $tType] :
      ( ( numeral @ A @ ( type2 @ A ) )
     => ! [X: num] :
          ( ( plus_plus @ A @ ( one_one @ A ) @ ( numeral_numeral @ A @ X ) )
          = ( plus_plus @ A @ ( numeral_numeral @ A @ X ) @ ( one_one @ A ) ) ) ) ).

% one_plus_numeral_commute
thf(fact_148_sublists_Osimps_I1_J,axiom,
    ! [A: $tType] :
      ( ( sublists @ A @ ( nil @ A ) )
      = ( cons @ ( list @ A ) @ ( nil @ A ) @ ( nil @ ( list @ A ) ) ) ) ).

% sublists.simps(1)
thf(fact_149_triangle__Suc,axiom,
    ! [N: nat] :
      ( ( nat_triangle @ ( suc @ N ) )
      = ( plus_plus @ nat @ ( nat_triangle @ N ) @ ( suc @ N ) ) ) ).

% triangle_Suc
thf(fact_150_longest__common__prefix_Oinduct,axiom,
    ! [A: $tType,P: ( list @ A ) > ( list @ A ) > $o,A0: list @ A,A12: list @ A] :
      ( ! [X3: A,Xs3: list @ A,Y4: A,Ys2: list @ A] :
          ( ( ( X3 = Y4 )
           => ( P @ Xs3 @ Ys2 ) )
         => ( P @ ( cons @ A @ X3 @ Xs3 ) @ ( cons @ A @ Y4 @ Ys2 ) ) )
     => ( ! [X1: list @ A] : ( P @ ( nil @ A ) @ X1 )
       => ( ! [Uu: list @ A] : ( P @ Uu @ ( nil @ A ) )
         => ( P @ A0 @ A12 ) ) ) ) ).

% longest_common_prefix.induct
thf(fact_151_prefixes_Ocases,axiom,
    ! [A: $tType,X: list @ A] :
      ( ( X
       != ( nil @ A ) )
     => ~ ! [X3: A,Xs3: list @ A] :
            ( X
           != ( cons @ A @ X3 @ Xs3 ) ) ) ).

% prefixes.cases
thf(fact_152_prefixes_Oinduct,axiom,
    ! [A: $tType,P: ( list @ A ) > $o,A0: list @ A] :
      ( ( P @ ( nil @ A ) )
     => ( ! [X3: A,Xs3: list @ A] :
            ( ( P @ Xs3 )
           => ( P @ ( cons @ A @ X3 @ Xs3 ) ) )
       => ( P @ A0 ) ) ) ).

% prefixes.induct
thf(fact_153_enat__ord__number_I2_J,axiom,
    ! [M: num,N: num] :
      ( ( ord_less @ extended_enat @ ( numeral_numeral @ extended_enat @ M ) @ ( numeral_numeral @ extended_enat @ N ) )
      = ( ord_less @ nat @ ( numeral_numeral @ nat @ M ) @ ( numeral_numeral @ nat @ N ) ) ) ).

% enat_ord_number(2)
thf(fact_154_product__lists_Osimps_I1_J,axiom,
    ! [A: $tType] :
      ( ( product_lists @ A @ ( nil @ ( list @ A ) ) )
      = ( cons @ ( list @ A ) @ ( nil @ A ) @ ( nil @ ( list @ A ) ) ) ) ).

% product_lists.simps(1)
thf(fact_155__092_060open_062LNil_A_061_Allist__of_A_091_093_092_060close_062,axiom,
    ! [A: $tType] :
      ( ( coindu1598213697e_LNil @ A )
      = ( coindu1079202755ist_of @ A @ ( nil @ A ) ) ) ).

% \<open>LNil = llist_of []\<close>
thf(fact_156_enat__less__induct,axiom,
    ! [P: extended_enat > $o,N: extended_enat] :
      ( ! [N2: extended_enat] :
          ( ! [M2: extended_enat] :
              ( ( ord_less @ extended_enat @ M2 @ N2 )
             => ( P @ M2 ) )
         => ( P @ N2 ) )
     => ( P @ N ) ) ).

% enat_less_induct
thf(fact_157_llist_Odistinct_I1_J,axiom,
    ! [A: $tType,X21: A,X22: coindu1593790203_llist @ A] :
      ( ( coindu1598213697e_LNil @ A )
     != ( coindu1121789889_LCons @ A @ X21 @ X22 ) ) ).

% llist.distinct(1)
thf(fact_158_llist_Oexhaust,axiom,
    ! [A: $tType,Y: coindu1593790203_llist @ A] :
      ( ( Y
       != ( coindu1598213697e_LNil @ A ) )
     => ~ ! [X212: A,X222: coindu1593790203_llist @ A] :
            ( Y
           != ( coindu1121789889_LCons @ A @ X212 @ X222 ) ) ) ).

% llist.exhaust
thf(fact_159_neq__LNil__conv,axiom,
    ! [A: $tType,Xs: coindu1593790203_llist @ A] :
      ( ( Xs
       != ( coindu1598213697e_LNil @ A ) )
      = ( ? [X5: A,Xs2: coindu1593790203_llist @ A] :
            ( Xs
            = ( coindu1121789889_LCons @ A @ X5 @ Xs2 ) ) ) ) ).

% neq_LNil_conv
thf(fact_160_lmember__code_I1_J,axiom,
    ! [A: $tType,X: A] :
      ~ ( coindu567634248member @ A @ X @ ( coindu1598213697e_LNil @ A ) ) ).

% lmember_code(1)
thf(fact_161_llist__of__eq__LNil__conv,axiom,
    ! [A: $tType,Xs: list @ A] :
      ( ( ( coindu1079202755ist_of @ A @ Xs )
        = ( coindu1598213697e_LNil @ A ) )
      = ( Xs
        = ( nil @ A ) ) ) ).

% llist_of_eq_LNil_conv
thf(fact_162_count__list_Osimps_I2_J,axiom,
    ! [A: $tType,X: A,Y: A,Xs: list @ A] :
      ( ( ( X = Y )
       => ( ( count_list @ A @ ( cons @ A @ X @ Xs ) @ Y )
          = ( plus_plus @ nat @ ( count_list @ A @ Xs @ Y ) @ ( one_one @ nat ) ) ) )
      & ( ( X != Y )
       => ( ( count_list @ A @ ( cons @ A @ X @ Xs ) @ Y )
          = ( count_list @ A @ Xs @ Y ) ) ) ) ).

% count_list.simps(2)
thf(fact_163_one__less__numeral__iff,axiom,
    ! [A: $tType] :
      ( ( linordered_semidom @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ( ( ord_less @ A @ ( one_one @ A ) @ ( numeral_numeral @ A @ N ) )
          = ( ord_less @ num @ one2 @ N ) ) ) ).

% one_less_numeral_iff
thf(fact_164_one__plus__numeral,axiom,
    ! [A: $tType] :
      ( ( numeral @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ( ( plus_plus @ A @ ( one_one @ A ) @ ( numeral_numeral @ A @ N ) )
          = ( numeral_numeral @ A @ ( plus_plus @ num @ one2 @ N ) ) ) ) ).

% one_plus_numeral
thf(fact_165_one__eq__numeral__iff,axiom,
    ! [A: $tType] :
      ( ( semiring_char_0 @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ( ( ( one_one @ A )
            = ( numeral_numeral @ A @ N ) )
          = ( one2 = N ) ) ) ).

% one_eq_numeral_iff
thf(fact_166_numeral__eq__one__iff,axiom,
    ! [A: $tType] :
      ( ( semiring_char_0 @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ( ( ( numeral_numeral @ A @ N )
            = ( one_one @ A ) )
          = ( N = one2 ) ) ) ).

% numeral_eq_one_iff
thf(fact_167_Suc__numeral,axiom,
    ! [N: num] :
      ( ( suc @ ( numeral_numeral @ nat @ N ) )
      = ( numeral_numeral @ nat @ ( plus_plus @ num @ N @ one2 ) ) ) ).

% Suc_numeral
thf(fact_168_numeral__plus__one,axiom,
    ! [A: $tType] :
      ( ( numeral @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ( ( plus_plus @ A @ ( numeral_numeral @ A @ N ) @ ( one_one @ A ) )
          = ( numeral_numeral @ A @ ( plus_plus @ num @ N @ one2 ) ) ) ) ).

% numeral_plus_one
thf(fact_169_add__One__commute,axiom,
    ! [N: num] :
      ( ( plus_plus @ num @ one2 @ N )
      = ( plus_plus @ num @ N @ one2 ) ) ).

% add_One_commute
thf(fact_170_numeral__One,axiom,
    ! [A: $tType] :
      ( ( numeral @ A @ ( type2 @ A ) )
     => ( ( numeral_numeral @ A @ one2 )
        = ( one_one @ A ) ) ) ).

% numeral_One
thf(fact_171_numerals_I1_J,axiom,
    ( ( numeral_numeral @ nat @ one2 )
    = ( one_one @ nat ) ) ).

% numerals(1)
thf(fact_172_Suc__nat__number__of__add,axiom,
    ! [V3: num,N: nat] :
      ( ( suc @ ( plus_plus @ nat @ ( numeral_numeral @ nat @ V3 ) @ N ) )
      = ( plus_plus @ nat @ ( numeral_numeral @ nat @ ( plus_plus @ num @ V3 @ one2 ) ) @ N ) ) ).

% Suc_nat_number_of_add
thf(fact_173_semiring__norm_I75_J,axiom,
    ! [M: num] :
      ~ ( ord_less @ num @ M @ one2 ) ).

% semiring_norm(75)
thf(fact_174_prefixes_Osimps_I1_J,axiom,
    ! [A: $tType] :
      ( ( prefixes @ A @ ( nil @ A ) )
      = ( cons @ ( list @ A ) @ ( nil @ A ) @ ( nil @ ( list @ A ) ) ) ) ).

% prefixes.simps(1)
thf(fact_175_Suc__1,axiom,
    ( ( suc @ ( one_one @ nat ) )
    = ( numeral_numeral @ nat @ ( bit0 @ one2 ) ) ) ).

% Suc_1
thf(fact_176_num_Oinject_I1_J,axiom,
    ! [X2: num,Y2: num] :
      ( ( ( bit0 @ X2 )
        = ( bit0 @ Y2 ) )
      = ( X2 = Y2 ) ) ).

% num.inject(1)
thf(fact_177_semiring__norm_I6_J,axiom,
    ! [M: num,N: num] :
      ( ( plus_plus @ num @ ( bit0 @ M ) @ ( bit0 @ N ) )
      = ( bit0 @ ( plus_plus @ num @ M @ N ) ) ) ).

% semiring_norm(6)
thf(fact_178_semiring__norm_I78_J,axiom,
    ! [M: num,N: num] :
      ( ( ord_less @ num @ ( bit0 @ M ) @ ( bit0 @ N ) )
      = ( ord_less @ num @ M @ N ) ) ).

% semiring_norm(78)
thf(fact_179_semiring__norm_I2_J,axiom,
    ( ( plus_plus @ num @ one2 @ one2 )
    = ( bit0 @ one2 ) ) ).

% semiring_norm(2)
thf(fact_180_semiring__norm_I76_J,axiom,
    ! [N: num] : ( ord_less @ num @ one2 @ ( bit0 @ N ) ) ).

% semiring_norm(76)
thf(fact_181_one__add__one,axiom,
    ! [A: $tType] :
      ( ( numeral @ A @ ( type2 @ A ) )
     => ( ( plus_plus @ A @ ( one_one @ A ) @ ( one_one @ A ) )
        = ( numeral_numeral @ A @ ( bit0 @ one2 ) ) ) ) ).

% one_add_one
thf(fact_182_add__2__eq__Suc,axiom,
    ! [N: nat] :
      ( ( plus_plus @ nat @ ( numeral_numeral @ nat @ ( bit0 @ one2 ) ) @ N )
      = ( suc @ ( suc @ N ) ) ) ).

% add_2_eq_Suc
thf(fact_183_add__2__eq__Suc_H,axiom,
    ! [N: nat] :
      ( ( plus_plus @ nat @ N @ ( numeral_numeral @ nat @ ( bit0 @ one2 ) ) )
      = ( suc @ ( suc @ N ) ) ) ).

% add_2_eq_Suc'
thf(fact_184_num_Odistinct_I1_J,axiom,
    ! [X2: num] :
      ( one2
     != ( bit0 @ X2 ) ) ).

% num.distinct(1)
thf(fact_185_numeral__Bit0,axiom,
    ! [A: $tType] :
      ( ( numeral @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ( ( numeral_numeral @ A @ ( bit0 @ N ) )
          = ( plus_plus @ A @ ( numeral_numeral @ A @ N ) @ ( numeral_numeral @ A @ N ) ) ) ) ).

% numeral_Bit0
thf(fact_186_nat__1__add__1,axiom,
    ( ( plus_plus @ nat @ ( one_one @ nat ) @ ( one_one @ nat ) )
    = ( numeral_numeral @ nat @ ( bit0 @ one2 ) ) ) ).

% nat_1_add_1
thf(fact_187_dbl__simps_I3_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ( ( neg_numeral_dbl @ A @ ( one_one @ A ) )
        = ( numeral_numeral @ A @ ( bit0 @ one2 ) ) ) ) ).

% dbl_simps(3)
thf(fact_188_add__neg__numeral__special_I9_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ( ( plus_plus @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) @ ( uminus_uminus @ A @ ( one_one @ A ) ) )
        = ( uminus_uminus @ A @ ( numeral_numeral @ A @ ( bit0 @ one2 ) ) ) ) ) ).

% add_neg_numeral_special(9)
thf(fact_189_dbl__simps_I5_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [K: num] :
          ( ( neg_numeral_dbl @ A @ ( numeral_numeral @ A @ K ) )
          = ( numeral_numeral @ A @ ( bit0 @ K ) ) ) ) ).

% dbl_simps(5)
thf(fact_190_neg__equal__iff__equal,axiom,
    ! [A: $tType] :
      ( ( group_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A] :
          ( ( ( uminus_uminus @ A @ A2 )
            = ( uminus_uminus @ A @ B ) )
          = ( A2 = B ) ) ) ).

% neg_equal_iff_equal
thf(fact_191_add_Oinverse__inverse,axiom,
    ! [A: $tType] :
      ( ( group_add @ A @ ( type2 @ A ) )
     => ! [A2: A] :
          ( ( uminus_uminus @ A @ ( uminus_uminus @ A @ A2 ) )
          = A2 ) ) ).

% add.inverse_inverse
thf(fact_192_neg__less__iff__less,axiom,
    ! [A: $tType] :
      ( ( ordered_ab_group_add @ A @ ( type2 @ A ) )
     => ! [B: A,A2: A] :
          ( ( ord_less @ A @ ( uminus_uminus @ A @ B ) @ ( uminus_uminus @ A @ A2 ) )
          = ( ord_less @ A @ A2 @ B ) ) ) ).

% neg_less_iff_less
thf(fact_193_neg__numeral__eq__iff,axiom,
    ! [A: $tType] :
      ( ( ring_char_0 @ A @ ( type2 @ A ) )
     => ! [M: num,N: num] :
          ( ( ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) )
            = ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) )
          = ( M = N ) ) ) ).

% neg_numeral_eq_iff
thf(fact_194_minus__add__distrib,axiom,
    ! [A: $tType] :
      ( ( ab_group_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A] :
          ( ( uminus_uminus @ A @ ( plus_plus @ A @ A2 @ B ) )
          = ( plus_plus @ A @ ( uminus_uminus @ A @ A2 ) @ ( uminus_uminus @ A @ B ) ) ) ) ).

% minus_add_distrib
thf(fact_195_minus__add__cancel,axiom,
    ! [A: $tType] :
      ( ( group_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A] :
          ( ( plus_plus @ A @ ( uminus_uminus @ A @ A2 ) @ ( plus_plus @ A @ A2 @ B ) )
          = B ) ) ).

% minus_add_cancel
thf(fact_196_add__minus__cancel,axiom,
    ! [A: $tType] :
      ( ( group_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A] :
          ( ( plus_plus @ A @ A2 @ ( plus_plus @ A @ ( uminus_uminus @ A @ A2 ) @ B ) )
          = B ) ) ).

% add_minus_cancel
thf(fact_197_add__neg__numeral__simps_I3_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [M: num,N: num] :
          ( ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) )
          = ( uminus_uminus @ A @ ( plus_plus @ A @ ( numeral_numeral @ A @ M ) @ ( numeral_numeral @ A @ N ) ) ) ) ) ).

% add_neg_numeral_simps(3)
thf(fact_198_dbl__simps_I1_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [K: num] :
          ( ( neg_numeral_dbl @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ K ) ) )
          = ( uminus_uminus @ A @ ( neg_numeral_dbl @ A @ ( numeral_numeral @ A @ K ) ) ) ) ) ).

% dbl_simps(1)
thf(fact_199_neg__one__eq__numeral__iff,axiom,
    ! [A: $tType] :
      ( ( ring_char_0 @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ( ( ( uminus_uminus @ A @ ( one_one @ A ) )
            = ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) )
          = ( N = one2 ) ) ) ).

% neg_one_eq_numeral_iff
thf(fact_200_numeral__eq__neg__one__iff,axiom,
    ! [A: $tType] :
      ( ( ring_char_0 @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ( ( ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) )
            = ( uminus_uminus @ A @ ( one_one @ A ) ) )
          = ( N = one2 ) ) ) ).

% numeral_eq_neg_one_iff
thf(fact_201_semiring__norm_I168_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [V3: num,W: num,Y: A] :
          ( ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ V3 ) ) @ ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ W ) ) @ Y ) )
          = ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ ( plus_plus @ num @ V3 @ W ) ) ) @ Y ) ) ) ).

% semiring_norm(168)
thf(fact_202_neg__numeral__less__iff,axiom,
    ! [A: $tType] :
      ( ( linordered_idom @ A @ ( type2 @ A ) )
     => ! [M: num,N: num] :
          ( ( ord_less @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) )
          = ( ord_less @ num @ N @ M ) ) ) ).

% neg_numeral_less_iff
thf(fact_203_neg__numeral__less__neg__one__iff,axiom,
    ! [A: $tType] :
      ( ( linordered_idom @ A @ ( type2 @ A ) )
     => ! [M: num] :
          ( ( ord_less @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( uminus_uminus @ A @ ( one_one @ A ) ) )
          = ( M != one2 ) ) ) ).

% neg_numeral_less_neg_one_iff
thf(fact_204_dbl__simps_I4_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ( ( neg_numeral_dbl @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) )
        = ( uminus_uminus @ A @ ( numeral_numeral @ A @ ( bit0 @ one2 ) ) ) ) ) ).

% dbl_simps(4)
thf(fact_205_not__numeral__less__neg__numeral,axiom,
    ! [A: $tType] :
      ( ( linordered_idom @ A @ ( type2 @ A ) )
     => ! [M: num,N: num] :
          ~ ( ord_less @ A @ ( numeral_numeral @ A @ M ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) ) ) ).

% not_numeral_less_neg_numeral
thf(fact_206_neg__numeral__less__numeral,axiom,
    ! [A: $tType] :
      ( ( linordered_idom @ A @ ( type2 @ A ) )
     => ! [M: num,N: num] : ( ord_less @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( numeral_numeral @ A @ N ) ) ) ).

% neg_numeral_less_numeral
thf(fact_207_less__minus__one__simps_I4_J,axiom,
    ! [A: $tType] :
      ( ( linordered_idom @ A @ ( type2 @ A ) )
     => ~ ( ord_less @ A @ ( one_one @ A ) @ ( uminus_uminus @ A @ ( one_one @ A ) ) ) ) ).

% less_minus_one_simps(4)
thf(fact_208_less__minus__one__simps_I2_J,axiom,
    ! [A: $tType] :
      ( ( linordered_idom @ A @ ( type2 @ A ) )
     => ( ord_less @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) @ ( one_one @ A ) ) ) ).

% less_minus_one_simps(2)
thf(fact_209_numeral__neq__neg__one,axiom,
    ! [A: $tType] :
      ( ( ring_char_0 @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ( ( numeral_numeral @ A @ N )
         != ( uminus_uminus @ A @ ( one_one @ A ) ) ) ) ).

% numeral_neq_neg_one
thf(fact_210_one__neq__neg__numeral,axiom,
    ! [A: $tType] :
      ( ( ring_char_0 @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ( ( one_one @ A )
         != ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) ) ) ).

% one_neq_neg_numeral
thf(fact_211_neg__numeral__neq__numeral,axiom,
    ! [A: $tType] :
      ( ( ring_char_0 @ A @ ( type2 @ A ) )
     => ! [M: num,N: num] :
          ( ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) )
         != ( numeral_numeral @ A @ N ) ) ) ).

% neg_numeral_neq_numeral
thf(fact_212_numeral__neq__neg__numeral,axiom,
    ! [A: $tType] :
      ( ( ring_char_0 @ A @ ( type2 @ A ) )
     => ! [M: num,N: num] :
          ( ( numeral_numeral @ A @ M )
         != ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) ) ) ).

% numeral_neq_neg_numeral
thf(fact_213_less__minus__iff,axiom,
    ! [A: $tType] :
      ( ( ordered_ab_group_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A] :
          ( ( ord_less @ A @ A2 @ ( uminus_uminus @ A @ B ) )
          = ( ord_less @ A @ B @ ( uminus_uminus @ A @ A2 ) ) ) ) ).

% less_minus_iff
thf(fact_214_minus__less__iff,axiom,
    ! [A: $tType] :
      ( ( ordered_ab_group_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A] :
          ( ( ord_less @ A @ ( uminus_uminus @ A @ A2 ) @ B )
          = ( ord_less @ A @ ( uminus_uminus @ A @ B ) @ A2 ) ) ) ).

% minus_less_iff
thf(fact_215_one__neq__neg__one,axiom,
    ! [A: $tType] :
      ( ( ring_char_0 @ A @ ( type2 @ A ) )
     => ( ( one_one @ A )
       != ( uminus_uminus @ A @ ( one_one @ A ) ) ) ) ).

% one_neq_neg_one
thf(fact_216_minus__equation__iff,axiom,
    ! [A: $tType] :
      ( ( group_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A] :
          ( ( ( uminus_uminus @ A @ A2 )
            = B )
          = ( ( uminus_uminus @ A @ B )
            = A2 ) ) ) ).

% minus_equation_iff
thf(fact_217_equation__minus__iff,axiom,
    ! [A: $tType] :
      ( ( group_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A] :
          ( ( A2
            = ( uminus_uminus @ A @ B ) )
          = ( B
            = ( uminus_uminus @ A @ A2 ) ) ) ) ).

% equation_minus_iff
thf(fact_218_is__num__normalize_I8_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A] :
          ( ( uminus_uminus @ A @ ( plus_plus @ A @ A2 @ B ) )
          = ( plus_plus @ A @ ( uminus_uminus @ A @ B ) @ ( uminus_uminus @ A @ A2 ) ) ) ) ).

% is_num_normalize(8)
thf(fact_219_add_Oinverse__distrib__swap,axiom,
    ! [A: $tType] :
      ( ( group_add @ A @ ( type2 @ A ) )
     => ! [A2: A,B: A] :
          ( ( uminus_uminus @ A @ ( plus_plus @ A @ A2 @ B ) )
          = ( plus_plus @ A @ ( uminus_uminus @ A @ B ) @ ( uminus_uminus @ A @ A2 ) ) ) ) ).

% add.inverse_distrib_swap
thf(fact_220_dbl__def,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ( ( neg_numeral_dbl @ A )
        = ( ^ [X5: A] : ( plus_plus @ A @ X5 @ X5 ) ) ) ) ).

% dbl_def
thf(fact_221_uminus__numeral__One,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ( ( uminus_uminus @ A @ ( numeral_numeral @ A @ one2 ) )
        = ( uminus_uminus @ A @ ( one_one @ A ) ) ) ) ).

% uminus_numeral_One
thf(fact_222_neg__numeral__less__one,axiom,
    ! [A: $tType] :
      ( ( linordered_idom @ A @ ( type2 @ A ) )
     => ! [M: num] : ( ord_less @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( one_one @ A ) ) ) ).

% neg_numeral_less_one
thf(fact_223_neg__one__less__numeral,axiom,
    ! [A: $tType] :
      ( ( linordered_idom @ A @ ( type2 @ A ) )
     => ! [M: num] : ( ord_less @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) @ ( numeral_numeral @ A @ M ) ) ) ).

% neg_one_less_numeral
thf(fact_224_not__numeral__less__neg__one,axiom,
    ! [A: $tType] :
      ( ( linordered_idom @ A @ ( type2 @ A ) )
     => ! [M: num] :
          ~ ( ord_less @ A @ ( numeral_numeral @ A @ M ) @ ( uminus_uminus @ A @ ( one_one @ A ) ) ) ) ).

% not_numeral_less_neg_one
thf(fact_225_not__one__less__neg__numeral,axiom,
    ! [A: $tType] :
      ( ( linordered_idom @ A @ ( type2 @ A ) )
     => ! [M: num] :
          ~ ( ord_less @ A @ ( one_one @ A ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) ) ) ).

% not_one_less_neg_numeral
thf(fact_226_not__neg__one__less__neg__numeral,axiom,
    ! [A: $tType] :
      ( ( linordered_idom @ A @ ( type2 @ A ) )
     => ! [M: num] :
          ~ ( ord_less @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) ) ) ).

% not_neg_one_less_neg_numeral
thf(fact_227_add__neg__numeral__special_I5_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ( ( plus_plus @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) )
          = ( uminus_uminus @ A @ ( numeral_numeral @ A @ ( inc @ N ) ) ) ) ) ).

% add_neg_numeral_special(5)
thf(fact_228_add__neg__numeral__special_I6_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [M: num] :
          ( ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( uminus_uminus @ A @ ( one_one @ A ) ) )
          = ( uminus_uminus @ A @ ( numeral_numeral @ A @ ( inc @ M ) ) ) ) ) ).

% add_neg_numeral_special(6)
thf(fact_229_num__induct,axiom,
    ! [P: num > $o,X: num] :
      ( ( P @ one2 )
     => ( ! [X3: num] :
            ( ( P @ X3 )
           => ( P @ ( inc @ X3 ) ) )
       => ( P @ X ) ) ) ).

% num_induct
thf(fact_230_add__inc,axiom,
    ! [X: num,Y: num] :
      ( ( plus_plus @ num @ X @ ( inc @ Y ) )
      = ( inc @ ( plus_plus @ num @ X @ Y ) ) ) ).

% add_inc
thf(fact_231_inc_Osimps_I1_J,axiom,
    ( ( inc @ one2 )
    = ( bit0 @ one2 ) ) ).

% inc.simps(1)
thf(fact_232_add__One,axiom,
    ! [X: num] :
      ( ( plus_plus @ num @ X @ one2 )
      = ( inc @ X ) ) ).

% add_One
thf(fact_233_numeral__inc,axiom,
    ! [A: $tType] :
      ( ( numeral @ A @ ( type2 @ A ) )
     => ! [X: num] :
          ( ( numeral_numeral @ A @ ( inc @ X ) )
          = ( plus_plus @ A @ ( numeral_numeral @ A @ X ) @ ( one_one @ A ) ) ) ) ).

% numeral_inc
thf(fact_234_add__neg__numeral__special_I4_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [N: num] :
          ( ( plus_plus @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) @ ( numeral_numeral @ A @ N ) )
          = ( neg_numeral_sub @ A @ N @ one2 ) ) ) ).

% add_neg_numeral_special(4)
thf(fact_235_add__neg__numeral__special_I3_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [M: num] :
          ( ( plus_plus @ A @ ( numeral_numeral @ A @ M ) @ ( uminus_uminus @ A @ ( one_one @ A ) ) )
          = ( neg_numeral_sub @ A @ M @ one2 ) ) ) ).

% add_neg_numeral_special(3)
thf(fact_236_sub__num__simps_I6_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [K: num,L: num] :
          ( ( neg_numeral_sub @ A @ ( bit0 @ K ) @ ( bit0 @ L ) )
          = ( neg_numeral_dbl @ A @ ( neg_numeral_sub @ A @ K @ L ) ) ) ) ).

% sub_num_simps(6)
thf(fact_237_semiring__norm_I166_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [V3: num,W: num,Y: A] :
          ( ( plus_plus @ A @ ( numeral_numeral @ A @ V3 ) @ ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ W ) ) @ Y ) )
          = ( plus_plus @ A @ ( neg_numeral_sub @ A @ V3 @ W ) @ Y ) ) ) ).

% semiring_norm(166)
thf(fact_238_semiring__norm_I167_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [V3: num,W: num,Y: A] :
          ( ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ V3 ) ) @ ( plus_plus @ A @ ( numeral_numeral @ A @ W ) @ Y ) )
          = ( plus_plus @ A @ ( neg_numeral_sub @ A @ W @ V3 ) @ Y ) ) ) ).

% semiring_norm(167)
thf(fact_239_add__neg__numeral__simps_I1_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [M: num,N: num] :
          ( ( plus_plus @ A @ ( numeral_numeral @ A @ M ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) )
          = ( neg_numeral_sub @ A @ M @ N ) ) ) ).

% add_neg_numeral_simps(1)
thf(fact_240_add__neg__numeral__simps_I2_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [M: num,N: num] :
          ( ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( numeral_numeral @ A @ N ) )
          = ( neg_numeral_sub @ A @ N @ M ) ) ) ).

% add_neg_numeral_simps(2)
thf(fact_241_add__neg__numeral__special_I1_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [M: num] :
          ( ( plus_plus @ A @ ( one_one @ A ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) )
          = ( neg_numeral_sub @ A @ one2 @ M ) ) ) ).

% add_neg_numeral_special(1)
thf(fact_242_add__neg__numeral__special_I2_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [M: num] :
          ( ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( one_one @ A ) )
          = ( neg_numeral_sub @ A @ one2 @ M ) ) ) ).

% add_neg_numeral_special(2)
thf(fact_243_sub__num__simps_I2_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [L: num] :
          ( ( neg_numeral_sub @ A @ one2 @ ( bit0 @ L ) )
          = ( uminus_uminus @ A @ ( numeral_numeral @ A @ ( bitM @ L ) ) ) ) ) ).

% sub_num_simps(2)
thf(fact_244_sub__num__simps_I4_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [K: num] :
          ( ( neg_numeral_sub @ A @ ( bit0 @ K ) @ one2 )
          = ( numeral_numeral @ A @ ( bitM @ K ) ) ) ) ).

% sub_num_simps(4)
thf(fact_245_eval__nat__numeral_I2_J,axiom,
    ! [N: num] :
      ( ( numeral_numeral @ nat @ ( bit0 @ N ) )
      = ( suc @ ( numeral_numeral @ nat @ ( bitM @ N ) ) ) ) ).

% eval_nat_numeral(2)
thf(fact_246_one__plus__BitM,axiom,
    ! [N: num] :
      ( ( plus_plus @ num @ one2 @ ( bitM @ N ) )
      = ( bit0 @ N ) ) ).

% one_plus_BitM
thf(fact_247_BitM__plus__one,axiom,
    ! [N: num] :
      ( ( plus_plus @ num @ ( bitM @ N ) @ one2 )
      = ( bit0 @ N ) ) ).

% BitM_plus_one
thf(fact_248_dbl__dec__simps_I5_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ! [K: num] :
          ( ( neg_numeral_dbl_dec @ A @ ( numeral_numeral @ A @ K ) )
          = ( numeral_numeral @ A @ ( bitM @ K ) ) ) ) ).

% dbl_dec_simps(5)
thf(fact_249_eq__numeral__iff__iszero_I8_J,axiom,
    ! [A: $tType] :
      ( ( ring_1 @ A @ ( type2 @ A ) )
     => ! [Y: num] :
          ( ( ( one_one @ A )
            = ( uminus_uminus @ A @ ( numeral_numeral @ A @ Y ) ) )
          = ( ring_1_iszero @ A @ ( numeral_numeral @ A @ ( plus_plus @ num @ one2 @ Y ) ) ) ) ) ).

% eq_numeral_iff_iszero(8)
thf(fact_250_dbl__dec__simps_I3_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A @ ( type2 @ A ) )
     => ( ( neg_numeral_dbl_dec @ A @ ( one_one @ A ) )
        = ( one_one @ A ) ) ) ).

% dbl_dec_simps(3)

%----Type constructors (36)
thf(tcon_fun___Orderings_Oorder,axiom,
    ! [A5: $tType,A6: $tType] :
      ( ( order @ A6 @ ( type2 @ A6 ) )
     => ( order @ ( A5 > A6 ) @ ( type2 @ ( A5 > A6 ) ) ) ) ).

thf(tcon_fun___Orderings_Oord,axiom,
    ! [A5: $tType,A6: $tType] :
      ( ( ord @ A6 @ ( type2 @ A6 ) )
     => ( ord @ ( A5 > A6 ) @ ( type2 @ ( A5 > A6 ) ) ) ) ).

thf(tcon_fun___Groups_Ouminus,axiom,
    ! [A5: $tType,A6: $tType] :
      ( ( uminus @ A6 @ ( type2 @ A6 ) )
     => ( uminus @ ( A5 > A6 ) @ ( type2 @ ( A5 > A6 ) ) ) ) ).

thf(tcon_Nat_Onat___Groups_Ostrict__ordered__ab__semigroup__add,axiom,
    strict2144017051up_add @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Groups_Oordered__cancel__ab__semigroup__add,axiom,
    ordere223160158up_add @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Groups_Oordered__ab__semigroup__add__imp__le,axiom,
    ordere236663937imp_le @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Groups_Oordered__ab__semigroup__add,axiom,
    ordere779506340up_add @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Groups_Ocancel__semigroup__add,axiom,
    cancel_semigroup_add @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Rings_Olinordered__semidom,axiom,
    linordered_semidom @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Groups_Oab__semigroup__add,axiom,
    ab_semigroup_add @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Rings_Ocomm__semiring__1,axiom,
    comm_semiring_1 @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Groups_Osemigroup__add,axiom,
    semigroup_add @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Nat_Osemiring__char__0,axiom,
    semiring_char_0 @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Orderings_Olinorder,axiom,
    linorder @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Orderings_Oorder_1,axiom,
    order @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Orderings_Oord_2,axiom,
    ord @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Num_Onumeral,axiom,
    numeral @ nat @ ( type2 @ nat ) ).

thf(tcon_Nat_Onat___Groups_Oone,axiom,
    one @ nat @ ( type2 @ nat ) ).

thf(tcon_Num_Onum___Orderings_Olinorder_3,axiom,
    linorder @ num @ ( type2 @ num ) ).

thf(tcon_Num_Onum___Orderings_Oorder_4,axiom,
    order @ num @ ( type2 @ num ) ).

thf(tcon_Num_Onum___Orderings_Oord_5,axiom,
    ord @ num @ ( type2 @ num ) ).

thf(tcon_HOL_Obool___Orderings_Olinorder_6,axiom,
    linorder @ $o @ ( type2 @ $o ) ).

thf(tcon_HOL_Obool___Orderings_Oorder_7,axiom,
    order @ $o @ ( type2 @ $o ) ).

thf(tcon_HOL_Obool___Orderings_Oord_8,axiom,
    ord @ $o @ ( type2 @ $o ) ).

thf(tcon_HOL_Obool___Groups_Ouminus_9,axiom,
    uminus @ $o @ ( type2 @ $o ) ).

thf(tcon_Extended__Nat_Oenat___Groups_Ostrict__ordered__ab__semigroup__add_10,axiom,
    strict2144017051up_add @ extended_enat @ ( type2 @ extended_enat ) ).

thf(tcon_Extended__Nat_Oenat___Groups_Oordered__ab__semigroup__add_11,axiom,
    ordere779506340up_add @ extended_enat @ ( type2 @ extended_enat ) ).

thf(tcon_Extended__Nat_Oenat___Groups_Oab__semigroup__add_12,axiom,
    ab_semigroup_add @ extended_enat @ ( type2 @ extended_enat ) ).

thf(tcon_Extended__Nat_Oenat___Rings_Ocomm__semiring__1_13,axiom,
    comm_semiring_1 @ extended_enat @ ( type2 @ extended_enat ) ).

thf(tcon_Extended__Nat_Oenat___Groups_Osemigroup__add_14,axiom,
    semigroup_add @ extended_enat @ ( type2 @ extended_enat ) ).

thf(tcon_Extended__Nat_Oenat___Nat_Osemiring__char__0_15,axiom,
    semiring_char_0 @ extended_enat @ ( type2 @ extended_enat ) ).

thf(tcon_Extended__Nat_Oenat___Orderings_Olinorder_16,axiom,
    linorder @ extended_enat @ ( type2 @ extended_enat ) ).

thf(tcon_Extended__Nat_Oenat___Orderings_Oorder_17,axiom,
    order @ extended_enat @ ( type2 @ extended_enat ) ).

thf(tcon_Extended__Nat_Oenat___Orderings_Oord_18,axiom,
    ord @ extended_enat @ ( type2 @ extended_enat ) ).

thf(tcon_Extended__Nat_Oenat___Num_Onumeral_19,axiom,
    numeral @ extended_enat @ ( type2 @ extended_enat ) ).

thf(tcon_Extended__Nat_Oenat___Groups_Oone_20,axiom,
    one @ extended_enat @ ( type2 @ extended_enat ) ).

%----Helper facts (3)
thf(help_If_3_1_T,axiom,
    ! [P: $o] :
      ( ( P = $true )
      | ( P = $false ) ) ).

thf(help_If_2_1_T,axiom,
    ! [A: $tType,X: A,Y: A] :
      ( ( if @ A @ $false @ X @ Y )
      = Y ) ).

thf(help_If_1_1_T,axiom,
    ! [A: $tType,X: A,Y: A] :
      ( ( if @ A @ $true @ X @ Y )
      = X ) ).

%----Conjectures (1)
thf(conj_0,conjecture,
    ( ( coindu1079202755ist_of @ nat @ ( cons @ nat @ ma @ ( upt @ ( suc @ ma ) @ ( plus_plus @ nat @ na @ ( suc @ ma ) ) ) ) )
    = ( coindu1079202755ist_of @ nat @ ( upt @ ma @ ( plus_plus @ nat @ ( suc @ na ) @ ma ) ) ) ) ).

%------------------------------------------------------------------------------